Задать вопрос
Dazle_PrG
@Dazle_PrG
WEB программист

В цикле for много кнопок как сделать .addEventListener('click', к каждой кнопке?

Если я разместил 1 обычный html код с кнопкой то код работает с циклом for нет, и хорошо было бы передать значение в ней.
let polz = <%- polz %>;
let p = 0;

for(p; p < polz.length; p++) {
polz2.innerHTML += '<div id="plus"><img src="p14.png"/>'+polz[p].name+'</div>';
}

/* +1 к рейтингу */

if(document.getElementById('plus')){
plus.addEventListener('click', () => {

console.log('нажал на кнопку');
});
}

Ошибку выдает Uncaught TypeError: plus.addEventListener is not a function
  • Вопрос задан
  • 127 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 2
@karminski
Senior React.JS Developer
1. У вас plus нигде не определен. Вы его ищете с помощью getElementById, но не сохраняете в переменную plus.
2. Почитайте про делегирование событий https://learn.javascript.ru/event-delegation. Это именно то, что вам нужно.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
id элемента должен быть уникальным в пределах одного документа. Вы создаёте много элементов с одним и тем же id, так делать нельзя. Если нужен способ выделения множества однотипных элементов, то используйте class.
Для назначения обработчика можно использовать всплытие событий (делегирование), как уже написал Антон Иванов, либо querySelectorAll() с обходом полученного списка через foreach.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Если у них общий родительский элемент, то может быть проще навесить один метод на родительский элемент, а уже в методе проверять, какой потомок был нажат (event.target)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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