Biến childrenlà một NodeListthể hiện và NodeLists không đúng Arrayvà do đó chúng không kế thừa forEachphương thức.
Ngoài ra, một số trình duyệt thực sự hỗ trợ nó nodeList.forEach
ES5
Bạn có thể sử dụng slicetừ Arrayđể chuyển đổi NodeListthành thích hợp Array.
var array = Array.prototype.slice.call(children);
Bạn cũng có thể chỉ cần sử dụng callđể gọi forEachvà chuyển nó NodeListlàm ngữ cảnh.
[].forEach.call(children, function(child) {});
ES6
Bạn có thể sử dụng fromphương pháp này để chuyển đổi của bạn NodeListthành một Array.
var array = Array.from(children);
Hoặc bạn cũng có thể sử dụng cú pháp lây lan... như vậy
let array = [ ...children ];
Một bản hack có thể được sử dụng là NodeList.prototype.forEach = Array.prototype.forEachvà sau đó bạn có thể sử dụng forEachvới bất kỳ NodeListmà không cần phải chuyển đổi chúng mỗi lần.
NodeList.prototype.forEach = Array.prototype.forEach
var children = element.childNodes;
children.forEach(function(item){
console.log(item);
});
Xem phần Tìm hiểu sâu hơn về NodeLists, Mảng, chuyển đổi NodeLists và hiểu DOM để có lời giải thích tốt và các cách khác để thực hiện.