@MihailDonskoy

Почему когда я повесил обработчик события на DIV браузер выдает ошибку что div.addEventListener is not a function?

var skin1 = document.getElementsByClassName("skin_1");
skin1.addEventListener("click", function(){
        console.log("hi");
});
  • Вопрос задан
  • 2628 просмотров
Решения вопроса 2
@justdealman
Потому что skin1 в данном случаем возвращает массив.

Делайте так:
var skin1 = document.getElementsByClassName("skin_1");
for (var i=0 ; i<skin1.length; i++) {
  skin1[i].addEventListener("click", function(){
          console.log("hi");
  });
}
Ответ написан
dom1n1k
@dom1n1k
Вероятно потому, что getElementsByClassName возвращает список элементов, а не одиночный элемент?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
nikolayshabalin
@nikolayshabalin
Автор профессиональных курсов в HTML Academy
Присоединюсь.
getElementsByClassName - возвращает коллекцию (массив).
Ознакомьтесь с пруфами 1, 2

Дополню.
Возможно addEventListener лучше не использовать, т.к. может повесится несколько обработчиков делающих одно и то же. Если заметите, что клик срабатывает несколько раз, перепишите на onclick
Ответ написан
Комментировать
it_proger29
@it_proger29
Битрикс
Мне помогла замена на такой код:

$(document).ready(function() {
    document.addEventListener( 'wpcf7submit', function( event ) {
        if ( '148' == event.detail.contactFormId ) { // Замените id на свою форму
            alert( "Опачки, меня пытаются отправить... в Магадан!" );
        }
    }, false );
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы