【发布时间】:2017-02-08 09:33:52
【问题描述】:
我正在使用 babel-polyfill 并且我正在尝试使用 for-of 循环迭代 HTMLCollection 对象:
const elements = document.getElementsByClassName('some-class')
for (const element of elements) {
console.log(element)
}
它不工作。我收到一个错误elements[Symbol.iterator] is not a function。如何让它正常工作?
【问题讨论】:
-
解释一下你误解的几件事:core-js 是 babel-polyfill 的一部分,所以包含两次是没有意义的。如果在控制台输入
Symbol.iterator有效,则仅表示该符号存在;这并不一定意味着elements具有Symbol.iterator属性。 for-of 循环不会将任何内容视为数组——它只是调用对象的@@iterator方法。 -
另外,如果您不知道什么是 HTMLCollection 对象:它是由
document.getElementsByClassName()返回的对象。 -
@Gothdo,澄清一下,我从来没有同时包含 core-js 和 babel-polyfill:我只是尝试在不同的时间导入它们,以查看其中一个是否可以工作。尽管如此,感谢您的澄清。
-
@thesublimeobject 拥有
Symbol.iterator并不意味着elements[Symbol.iterator]应该在那里。elements是否公开 iterator 接口(因此[Symbol.iterator]方法)与其类型有关。它只是在你的情况下看起来这种类型没有暴露它
标签: javascript dom ecmascript-6 htmlcollection babel-polyfill