Цикл через массив и добавить прослушиватель событий "click" к каждому
Я пытаюсь перебрать массив элементов и добавить прослушиватель событий к каждому из них.
Заполнение массива:
var sliders = [].slice.call(document.getElementsByClassName("sliderControlLi"));
Перебираем массив:
sliders.forEach(function (i){
addEventListener("click", function(){
console.log("you clicked slider controler " + this.index + "!");
});
});
Но с этим кодом, всякий раз, когда я нажимаю на любой из ползунков, я получаю несколько консолей.распечатки журналов-по одному разу для каждого слайдера в массиве.
Я искал подобные проблемы, но до сих пор не могу решить эту.Спасибо за любую помощь!
2 ответа:
Вы должны использовать
addEventListener()
как:target.addEventListener(type, listener[, options]);
Вы также можете получить индекс от
forEach
:arr.forEach(function ( element_value,element_index ){ })
Надеюсь, это поможет.
var sliders = [].slice.call(document.getElementsByClassName("sliderControlLi")); sliders.forEach(function (element, index){ element.addEventListener("click", function(){ console.log("you clicked slider controler " +index + "!"); }); });
<div class="sliderControlLi">slider 1</div> <div class="sliderControlLi">slider 2</div> <div class="sliderControlLi">slider 3</div> <div class="sliderControlLi">slider 4</div>