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

Как повесить 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)
    }

Но ивент навешивается только на последний элемент коллекции.
  • Вопрос задан
  • 448 просмотров
Подписаться 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)
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
22 янв. 2025, в 18:00
15000 руб./за проект
22 янв. 2025, в 17:57
2000 руб./в час
22 янв. 2025, в 17:57
15000 руб./за проект