Zmienna children
jest NodeList
instancją i NodeList
s nie są prawdziwe Array
i dlatego nie dziedziczą forEach
metody.
Niektóre przeglądarki faktycznie to obsługują nodeList.forEach
ES5
Możesz użyć slice
from, Array
aby przekonwertować NodeList
plik na właściwy Array
.
var array = Array.prototype.slice.call(children);
Możesz również po prostu użyć go call
do wywołania forEach
i przekazania go NodeList
jako kontekstu.
[].forEach.call(children, function(child) {});
ES6
Możesz użyć tej from
metody, aby przekonwertować NodeList
plik 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.forEach
i można go następnie użyć forEach
z dowolnym NodeList
bez 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.