Змінна children
є NodeList
екземпляром, і NodeList
s не відповідають дійсності, Array
і тому вони не успадковують forEach
метод.
Також деякі браузери насправді його підтримують nodeList.forEach
ES5
Ви можете використовувати slice
з, 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);
});
Дивіться всебічне занурення у NodeLists, Arrays, перетворення NodeLists та розуміння DOM для гарного пояснення та інших способів зробити це.