Задать вопрос
@Richswitch
junior

Почему я не могу применить forEach для массива взятого из DOM?

Привет!
Почему я не могу получить массив с помощью такого кода:
var cell = document.getElementsByClassName('cell');

cell.forEach(function(item, i, arr){
	console.log(arr);
});

А с помощью такого могу
var cell = document.getElementsByClassName('cell');

[].forEach.call(cell, function(item, i, arr){
	console.log(arr);
});

Ведь с помощью document.getElementsByClassName('cell'); я беру массив из DOM, даже могу вывести его в консоль. Так почему я не могу использовать его вместе с forEach?

PS объясните пожалуйста, что обозначает [] перед forEach, я догадываюсь что это значит, но хочу узнать четкий ответ на этот вопрос
  • Вопрос задан
  • 244 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
@cester
Используйте es6.
var cell = [...document.getElementsByClassName('cell')];
Ответ написан
Комментировать
@RidgeA
1. getElementsByClassName возвращает не массив, а HTMLCollecton
https://developer.mozilla.org/ru/docs/Web/API/Docu...
https://developer.mozilla.org/ru/docs/Web/API/HTML...

2. [].forEach.call -> взять из прототипа массива метод forEach, вызвать его, в качестве контекста (this) передать первый аргумент, все последующие передать в функцию forEach.
https://developer.mozilla.org/ru/docs/Web/JavaScri...
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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