来自core-js GitHub 页面上的“Iterable DOM collections”:
一些 DOM 集合应该有可迭代的接口或者应该
继承自
Array
. 这意味着它们应该具有keys
、values
和entries
迭代@@iterator
方法。所以添加它们。模块
web.dom.iterable
:
{
NodeList,
DOMTokenList,
MediaList,
StyleSheetList,
CSSRuleList
}
#values() -> iterator
#keys() -> iterator
#entries() -> iterator
#@@iterator() -> iterator (values)
如您所见,该列表不包括HTMLCollection
. 为了能够使用 for-of 循环HTMLCollection
,您必须手动分配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
对象。