Die Variable children
ist eine NodeList
Instanz und NodeList
s sind nicht wahr Array
und erben daher die forEach
Methode nicht.
Auch einige Browser unterstützen es tatsächlich nodeList.forEach
ES5
Sie können slice
von verwenden Array
, um das NodeList
in ein richtiges umzuwandeln Array
.
var array = Array.prototype.slice.call(children);
Sie können es auch einfach verwenden call
, um forEach
es NodeList
als Kontext aufzurufen und zu übergeben .
[].forEach.call(children, function(child) {});
ES6
Sie können die from
Methode verwenden, um Ihre NodeList
in eine zu konvertieren Array
.
var array = Array.from(children);
Oder Sie können auch die Spread-Syntax...
wie folgt verwenden
let array = [ ...children ];
Ein Hack, der verwendet werden kann, ist NodeList.prototype.forEach = Array.prototype.forEach
und Sie können ihn dann forEach
mit jedem verwenden, NodeList
ohne sie jedes Mal konvertieren zu müssen.
NodeList.prototype.forEach = Array.prototype.forEach
var children = element.childNodes;
children.forEach(function(item){
console.log(item);
});
Eine ausführliche Erklärung und andere Möglichkeiten finden Sie unter Ein umfassender Einblick in NodeLists, Arrays, Konvertieren von NodeLists und Verstehen des DOM .