Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

【JavaScript】HTMLCollectionsでArray.prototype.forEach()などを使用する

備忘録がてら。

ブラウザ上で[document.getElementsByClassName()]等を実行した場合に返却される[HTMLCollections]はArrayのような動きをするが、最低限の機能しか備わっていない。

もし[Array.prototype.forEach()]等を実行したいのであれば、[Array.prototype.forEach.call()]を利用すると実行可能。

※ Indexed Collectionという規格に沿っていれば利用できるみたい

例:demo1.js

Array.prototype.forEach.call(document.getElementsByClassName('video-stream'), console.log);

 

もしくは以下のようにいっその事Arrayへ変換してやると楽で良い。

例:demo2.js

[...document.getElementsByClassName('video-stream')].forEach(console.log);

 

追記

demo2.jsで行われているのは分割代入ではないのではないかという指摘を頂いたので修正しました。

個人的には微妙なラインだと思っているのですが、曖昧なことを書くべきではないと思ったためです。

ご指摘ありがとうございます。

 

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)