Задать вопрос

Как повесить EventListener на все элементы в коллекции?

На странице генерируется n-ое кол-во кнопок с одинаковым классом. Мне нужно на все эти кнопки повесить EventListener. Пытался делать так:
var buttons = document.getElementsByClassName('buttons');
var button;
for(var i=0; i<buttons.length; i++){
        button = buttons[i]
        button.addEventListener('click', some_function)
    }

Но ивент навешивается только на последний элемент коллекции.
  • Вопрос задан
  • 445 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
hzzzzl
@hzzzzl
document.body.addEventListener('click', (event) => {
  if (event.target.matches('.buttons')) {
    some_function(event)
  }
})


но если хочется циклом, то var поменять на let должно хватить

for(let i=0; i<buttons.length; i++){
        button = buttons[i]
        button.addEventListener('click', some_function)
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы