我正在尝试制作一个简单的循环:
const parent = this.el.parentElement console.log(parent.children) parent.children.forEach(child => { console.log(child) })
但我收到以下错误:
VM384:53 未捕获的类型错误:parent.children.forEach 不是函数
即使parent.children日志:
parent.children
可能是什么问题呢?
注意:这是一个JSFiddle。
是一个类似parent.children数组的对象。使用以下解决方案:
const parent = this.el.parentElement; Array.prototype.forEach.call(parent.children, child => { console.log(child) });
parent.childrenis类型,它是一个类似NodeList数组的对象,因为:
NodeList
length
{0: NodeObject, 1: NodeObject, length: 2, ...}
在本文中查看更多详细信息。
parent.children是一个HTMLCollection: 它实现了可迭代协议。在 ES2015 环境中,您可以将HTMLCollection与接受迭代的任何构造一起使用。
HTMLCollection
HTMLCollection与扩展运算符一起使用:
const parent = this.el.parentElement; [...parent.children].forEach(child => { console.log(child); });
或者使用for..of循环(这是我的首选):
for..of
const parent = this.el.parentElement; for (const child of parent.children) { console.log(child); }