ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「getElementsByClassName」が配列を返さないのはなぜですか?

JavaScript で「getElementsByClassName」が配列を返さないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-06 12:23:15719ブラウズ

Why Doesn't `getElementsByClassName` Return an Array in JavaScript?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。