Переменная children
является NodeList
экземпляром, а NodeList
s не являются истинными, Array
поэтому они не наследуют forEach
метод.
Также некоторые браузеры поддерживают его nodeList.forEach
ES5
Вы можете использовать slice
from Array
для преобразования NodeList
в правильный Array
.
var array = Array.prototype.slice.call(children);
Вы также можете просто call
вызвать forEach
и передать его в NodeList
качестве контекста.
[].forEach.call(children, function(child) {});
ES6
Вы можете использовать этот from
метод для преобразования вашего файла NodeList
в формат Array
.
var array = Array.from(children);
Или вы также можете использовать синтаксис распространения,...
например
let array = [ ...children ];
Хак, который можно использовать, NodeList.prototype.forEach = Array.prototype.forEach
и вы можете использовать forEach
с любым NodeList
без необходимости конвертировать их каждый раз.
NodeList.prototype.forEach = Array.prototype.forEach
var children = element.childNodes;
children.forEach(function(item){
console.log(item);
});
См. Подробное описание списков узлов, массивов, преобразования списков узлов и понимания модели DOM для получения хорошего объяснения и других способов сделать это.