Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2021, 18:39
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

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

function creater(name) {
  var img = document.querySelector('#'+name);
  img.addEventListener('click', function(e) {
//
  }, false);
}
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2021, 19:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

dima85,
id уникально! может class и for?
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2021, 19:34
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

А что с ID не так?
Ответить с цитированием
  #4 (permalink)  
Старый 16.08.2021, 20:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от dima85
А что с ID не так?
document.querySelector('#'+name) найдёт только первый элемент на странице с таким id.
Ответить с цитированием
  #5 (permalink)  
Старый 16.08.2021, 20:45
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

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

И в данном случае отслеживание идет только в test2 блоке,
Причина насколько я понимаю в переменной img
Ответить с цитированием
  #6 (permalink)  
Старый 16.08.2021, 20:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

dima85,
нужен макет, иначе только гадать. возможно уже нет элементов на которые ставился клик.
Ответить с цитированием
  #7 (permalink)  
Старый 16.08.2021, 21:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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

Последний раз редактировалось рони, 16.08.2021 в 21:35.
Ответить с цитированием
  #8 (permalink)  
Старый 16.08.2021, 21:39
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск