ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「getElementsByClassName」が配列を返さないのはなぜですか?
getElementsByClassName 配列ではなく HTMLCollection を返します
JavaScript では、 document.getElementsByClassName メソッドは、指定された要素と一致する DOM 要素のコレクションを返します。クラス名。ただし、このコレクションは配列ではなく、HTMLCollection.
最新のブラウザー (Firefox 3 以降) では、 this を設定することで Array.forEach メソッドを HTMLCollection で使用できます。 forEach 関数の値を HTMLCollection に渡します。その方法は次のとおりです:
var els = document.getElementsByClassName("myclass"); Array.prototype.forEach.call(els, function(el) { // Do something with the element }); // Or, in ES6+ [].forEach.call(els, (el) => { // Do something with the element });
ES6 を使用するより現代的なアプローチは、Array.from を使用して HTMLCollection を実際の配列に変換することです:
Array.from(els).forEach((el) => { // Do something with the element });
この値を設定することによってまたは、Array.from を使用すると、配列であるかのように forEach メソッドを使用して HTMLCollection を反復処理できます。 Internet Explorer 8 以前などの古いブラウザはこのアプローチをサポートしておらず、HTMLCollection の代わりに NodeList を返すことに注意してください。
以上がJavaScript で「getElementsByClassName」が配列を返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。