ホームページ > ウェブフロントエンド > jsチュートリアル > 「forEach」が「HTMLCollection」で直接動作しないのはなぜですか?

「forEach」が「HTMLCollection」で直接動作しないのはなぜですか?

Barbara Streisand
リリース: 2024-12-01 03:01:09
オリジナル
461 人が閲覧しました

Why Doesn't `forEach` Work Directly on `HTMLCollection`?

Array.forEach による HTMLCollection の反復

このジレンマでは、開発者は document.getElementsByClassName("myclass").forEach を使用して DOM 要素を反復しようとします。 「.forEach はfunction."

HTMLCollection について

このエラーを解決する鍵は、getElementsByClassName によって返される結果の性質を理解することにあります。その名前に反して、配列ではなく HTMLCollection を生成します。 HTMLCollection は、NodeList と同様に、DOM4 仕様に従っており、微妙だが重要な点で従来の配列とは異なります。

HTMLCollection から Array への変換

強力な forEach メソッドを利用するには、まず、 HTMLCollection を配列に変換します。この変換を実行できるメソッドはいくつかあります。

Using Array.prototype.forEach.call:

var els = document.getElementsByClassName("myclass");

Array.prototype.forEach.call(els, function(el) {
  // Do stuff here
  console.log(el.tagName);
});
ログイン後にコピー

Using [].forEach.call:

[].forEach.call(els, function (el) {...});
ログイン後にコピー

を使用するArray.from (ES6):

Array.from(els).forEach((el) => {
  // Do stuff here
  console.log(el.tagName);
});
ログイン後にコピー

HTMLCollection を配列に変換すると、forEach を含む大量の配列メソッドを活用して、DOM 要素を効率的に処理および操作できます。

以上が「forEach」が「HTMLCollection」で直接動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート