Zmienna childrenjest NodeListinstancją i NodeLists nie są prawdziwe Arrayi dlatego nie dziedziczą forEachmetody.
Niektóre przeglądarki faktycznie to obsługują nodeList.forEach
ES5
Możesz użyć slicefrom, Arrayaby przekonwertować NodeListplik na właściwy Array.
var array = Array.prototype.slice.call(children);
Możesz również po prostu użyć go calldo wywołania forEachi przekazania go NodeListjako kontekstu.
[].forEach.call(children, function(child) {});
ES6
Możesz użyć tej frommetody, aby przekonwertować NodeListplik na plik Array.
var array = Array.from(children);
Albo można też użyć składni spread... jak tak
let array = [ ...children ];
Hack, którego można użyć, jest NodeList.prototype.forEach = Array.prototype.forEachi można go następnie użyć forEachz dowolnym NodeListbez konieczności ich każdorazowej konwersji.
NodeList.prototype.forEach = Array.prototype.forEach
var children = element.childNodes;
children.forEach(function(item){
console.log(item);
});
Zobacz obszerne omówienie NodeLists, Arrays, konwersji NodeLists i zrozumienia DOM aby uzyskać dobre wyjaśnienie i inne sposoby zrobienia tego.