Страницы

Поиск по вопросам

вторник, 23 октября 2018 г.

Почему идет ошибка like.addEventListener is not a function?

Есть такой код и он работает:
function openLikeBlock() { var like = document.getElementById("like"); like.addEventListener('click', function (e) { e.preventDefault(); if (!this.classList.contains('open')) this.classList.add('open'); else this.classList.remove('open'); }); }
Но если добавить ClassName то будет ошибка:
var like = document.getElementsByClassName("like");
Uncaught TypeError: like.addEventListener is not a function
Мне нужно именно класс, так как таких блоков несколько на странице (поэтому использую this)
Вопрос: как сделать, что бы я мог получать элемент по классу, а не ID?


Ответ

Потому что getElementsByClassName возвращает коллекцию элементов, а у коллекции нет метода addEventListener
для решение можно просто пробежаться по возвращенной коллекции. например так:
[].forEach.call(like,function(el){ el.addEventListener('click', function (e) {...}) });

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

Отправить комментарий