Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   function and multi addEventListener (https://javascript.ru/forum/dom-window/82967-function-multi-addeventlistener.html)

dima85 16.08.2021 18:39

function and multi addEventListener
 
Работает отслеживание нажатия только в последнем блоке где сработала функция.
Подскажите как ее заставить работать во всех блоках.

function creater(name) {
  var img = document.querySelector('#'+name);
  img.addEventListener('click', function(e) {
//
  }, false);
}

рони 16.08.2021 19:12

dima85,
id уникально! может class и for?

dima85 16.08.2021 19:34

А что с ID не так?

рони 16.08.2021 20:23

Цитата:

Сообщение от dima85
А что с ID не так?

document.querySelector('#'+name) найдёт только первый элемент на странице с таким id.

dima85 16.08.2021 20:45

Ну правильно id уникальны. Они не могут повторяться.
Я запускаю функцию.
creater("test1");
creater("test2");

И в данном случае отслеживание идет только в test2 блоке,
Причина насколько я понимаю в переменной img

рони 16.08.2021 20:51

dima85,
нужен макет, иначе только гадать. возможно уже нет элементов на которые ставился клик.

рони 16.08.2021 21:01

dima85,
как вариант делегирование ...
function creater(name) {
    document.addEventListener('click', function(e) {
    var img = e.target.closest('#'+name);
    if(img)  alert('#'+name);
    }, false);
}

dima85 16.08.2021 21:39

Разобрался. Спасибо за наводку. Не усмотрел html, id повторялся в одном из нужных блоков и это приводила с таким проблемам.


Часовой пояс GMT +3, время: 18:06.