core-js GitHub ページの「反復可能な DOM コレクション」から:
一部の 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