Uncaught TypeError: Невозможно прочитать свойство 'click' из неопределенного - PullRequest
0 голосов
/ 20 апреля 2019

Я использую следующий код JS в функции для выхода из веб-сайта на Chrome:

var docLogout = document.querySelector('.submit.logout');
docLogout.click();

Я получаю ошибку:

'Uncaught TypeError: Cannot read property 'click' of undefined'

Это потому, что мне нужно сделатьсначала убедитесь, что класс кнопки существует, и я делаю это с помощью следующих шагов, которые я выяснил:

  • Используйте кнопку «выбрать элемент на странице для его проверки» (первая кнопка наслева от инструментов разработчика)

  • Нажмите кнопку Выйти, чтобы просмотреть ее

  • Откроется вкладка Elemets
  • Поле Элементывыделяет строку <button type="submit" class="submit logout">Log out</button>
  • Затем я нажимаю на вкладку Консоль
  • Вставьте мой код снова, и он заработает (любая кнопка на той же странице будет работать после этого)

Как можно избежать этого ручного шага, чтобы сначала узнать элементы с помощью вышеуказанных шагов?Есть ли способ изначально развернуть все элементы DOM, когда веб-сайт загружает другую страницу, чтобы избежать ошибки «Cannot read property 'click' of undefined '» без какого-либо вмешательства человека при первом использовании кнопки inspect elements?

ПРИМЕЧАНИЕ: хотя бы объясни донотам, чтобы я мог тебя заинтересовать !!!!!!

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

docLogout равно undefined, то есть в документе нет элементов с классами submit и logout в настоящее время

Если можно вручную проверить страницу и найти <button class="submit logout">, то код, вероятно, работает до того, как <button> был присоединен к DOM.

Решение: убедитесь, что код работает после того, как DOM прикрепил <button>.

Один из способов сделать это - поместить <script> непосредственно перед закрывающим тегом </body>, например,

<!doctype html>
<html>
  <head></head>
  <body>
    <button class="submit logout">Logout</button>
    <script>
      /* button is attached to the DOM at this point */
      const docLogout = document.querySelector('.submit.logout')
      docLogout.click()
    <script>
  </body>
</html>

Другим решением является запуск кода после события window load, например,

window.addEventListener('load', () => {
  document.querySelector('.submit.logout').click()
})

Если возможно, я бы рекомендовал дать кнопке id и использовать document.getElementById

0 голосов
/ 20 апреля 2019

, кажется, вы не используете селектор правильно.Вы можете поставить разрыв в этой строке, проверить, почему он принимает значение null / undefined, используя f12, перейти к источнику и найти файл js, а также поставить точку останова в этой строке для его отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...