Могу ли я использовать итератор массива для выполнения той же функции, что и цикл for?

#javascript #loops #addeventlistener #arrayiterator

#javascript #циклы #addeventlistener #arrayiterator

Вопрос:

Я пытаюсь понять, возможно ли использовать итератор массива (например .forEach()) для выполнения той же функциональности, что и цикл for.

Я пытаюсь понять прослушиватели событий javascript и написал некоторый базовый код, который поможет мне научиться

У меня есть несколько div с именем класса ‘button’.

У меня есть функциональность, которой я хочу достичь, работая с циклом for, но я не смог придумать, как сделать то же самое с итератором. Возможно ли это??

 // Can I use an Array Iterator to do the same operation here
for (var i = 0; i < button.length; i  ) {
  addEvent(button[i]);
}
  

Смотрите JSFiddle всего моего кода здесь

Я пытался использовать .Итератор forEach (), но не смог понять, как захватить индекс массива в итераторе forEach (), поскольку мне нужно определить, на какой кнопке запускать функцию addEvent.

Ответ №1:

button в коде, на который вы разместили только ссылку, это HTMLCollection, поэтому с ним «изначально» мало что можно сделать

Однако, используя Array.из вы можете «преобразовать» его в массив, а затем использовать метод Array#forEach — таким образом, ваш код будет

 Array.from(button).forEach(function(btn) {
    addEvent(btn);
});
  

или, еще лучше

 Array.from(button).forEach(addEvent);
  

Если вы имеете дело с Internet Exploder, вам понадобится полизаполнение для Array.from

Если вам нужно разобраться с Internet Exploder до версии 9, вам понадобится полизаполнение для Array.prototype.forEach

Документация MDN, на которую я ссылался, содержит полизаполнения для обоих

Комментарии:

1. Спасибо за помощь Jaromanda X. Моя ошибка, я прочитал Array, когда в документе указано Array-like. Я не понимал, что это HTML-коллекция. > Метод getElementsByClassName интерфейса Document возвращает >** массивоподобный ** объект всех дочерних элементов, которые имеют все заданные имена классов.

2. да, это ловушка: p