@dom12

Почему событие onclick срабатывает 2 раза?

Если первый раз запустить функцию, то все работает:
function CLICK() {
	let button = document.querySelectorAll('button');
	if(button.length){ 
		for (let i = 0; i < button.length; i++){
			button[i].addEventListener('click', function(EVENT){
				console.log(1,button[i]);
			});
		}
	}
}
CLICK();

Но после добавления новых кнопок я запуская функцию CLICK(); ещё раз чтобы новые кнопки сработали. Из-за этого событие click начали срабатывает 2 раза. (Также и с другими заново запущенными функциями срабатывают 2 раза).

Как исправить двойной клик при событие click и не только?
  • Вопрос задан
  • 451 просмотр
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
function CLICK() {
  let button = document.querySelectorAll('button');
  if(button.length){ 
    for (let i = 0; i < button.length; i++){
+     if (!button[i].classList.contains('ok'))
+       button[i].classList.add('ok');
        button[i].addEventListener('click', function(EVENT){
          console.log(1,button[i]);
        });
+     }
    }
  }
}
CLICK();


Но лучше подумать о делегировании событий.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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