Biến children
là một NodeList
thể hiện và NodeList
s không đúng Array
và do đó chúng không kế thừa forEach
phươ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 slice
từ Array
để chuyển đổi NodeList
thà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 forEach
và chuyển nó NodeList
làm ngữ cảnh.
[].forEach.call(children, function(child) {});
ES6
Bạn có thể sử dụng from
phương pháp này để chuyển đổi của bạn NodeList
thà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.forEach
và sau đó bạn có thể sử dụng forEach
với bất kỳ NodeList
mà 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.