Javascript — получить элемент со страницы, щелкнуть по нему. getElementsByClassName не работает

#javascript #html #web-scraping #browser-automation

#javascript #HTML #очистка веб-страниц #браузер-автоматизация

Вопрос:

Итак, я пытаюсь получить элемент button со страницы по имени класса. Но эта функция, а также queryselector возвращают неопределенное значение. В чем может быть причина? Может ли это быть потому, что этот элемент является дочерним элементом другого элемента?

 var checkout_btn = document.getElementsByClassName('button-submit');
console.log("INITIALIZED"); 
console.log(checkout_btn);
 

Консоль

Кнопка html

Комментарии:

1. используйте запросы для выбора, var btn = document.querySelector(".button-submit");

2. Опубликованный вами код в порядке, это не проблема. Мы не можем помочь, потому что у нас недостаточно информации. Если мне нужно угадать, просто убедитесь, что вы выполняете его после загрузки DOM. Вы также можете поместить его в конец страницы, непосредственно перед </body> тегом.

3. @TudorAlexandru попробовал. Тот же результат.

4. @kosmos я просто поместил его в функцию window.onload. Происходит то же самое. Также я делаю это с помощью скрипта содержимого для расширения Chrome, может быть, это причина? Еще одна странность заключается в том, что если я нахожу элементы по тегу button, он находит нужный мне элемент, но когда я обращаюсь к нему с помощью индекса, он говорит null.

Ответ №1:

создайте и используйте идентификатор вместо className или попробуйте этот документ.getElementsByClassName(«кнопка-отправить»)[0]

ps. Потому что getElementsByClassName возвращает массивоподобный объект всех дочерних элементов, которые имеют все заданные имена классов.

Комментарии:

1. Я не могу создать идентификатор, он предназначен для расширения Chrome, которое выполняет скрипт содержимого на чужом веб-сайте.

2. итак, попробуйте 2-й, с className[0]