我正在使用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
。如何使其正常工作? 最佳答案
从"Iterable DOM collections" on the core-js GitHub page:
如您所见,该列表不包含HTMLCollection
。为了能够对HTMLCollection
使用for-of循环,您必须手动将Array.prototype.values
分配给HTMLCollection.prototype[Symbol.iterator]
。请参阅以下示例:
HTMLCollection.prototype[Symbol.iterator] = Array.prototype.values
for (const element of document.getElementsByTagName('a')) {
console.log(element.href)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.min.js"></script>
<a href="//www.google.com">Google</a>
<a href="//www.github.com">GitHub</a>
另外,您可以只使用
document.querySelectorAll()
,它返回一个NodeList
对象。关于javascript - 使用for-of循环迭代HTMLCollection对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39780789/