NodeList を正しく反復する方法: getElementsByClassName の解決策?

DDD
リリース: 2024-11-11 10:33:03
オリジナル
402 人が閲覧しました

How to Iterate Through NodeLists Correctly: A Solution for getElementsByClassName?

NodeList の正しい反復: getElementsByClassName の解決策

getElementsByClassName 関数の戻り値である NodeList を操作する場合、正しい反復アプローチを使用して次のような問題を回避することが重要です。長さや要素の変更などの予期しない動作order.

NodeList について

配列とは異なり、NodeList は DOM ツリーの変更に従って動的に更新されるライブ コレクションです。これは、NodeList の内容が反復中に変更される可能性があり、問題が発生する可能性があることを意味します。

解決策

NodeList を効果的に反復するには、 item メソッドを使用してアクセスします。個々の要素。これにより、要素は NodeList を変更せずに確実に取得されます。

const slides = document.getElementsByClassName("slide");
for (let i = 0; i < slides.length; i++) {
  Distribute(slides.item(i));
}
ログイン後にコピー

ネストされたスライドの例

スライドが他の要素内でネストされている場合、次のようにします。別のアプローチが必要な場合があります:

const slides = document.getElementsByClassName("slide");
const clonedSlides = [];

// Clone each slide to prevent DOM updates during iteration
for (let i = 0; i < slides.length; i++) {
  clonedSlides.push(slides.item(i).cloneNode(true));
}

// Iterate through the cloned slides and perform necessary actions
for (let i = 0; i < clonedSlides.length; i++) {
  Distribute(clonedSlides[i]);
}
ログイン後にコピー

スライドを複製することで、 DOM のスナップショット。反復プロセスが DOM ツリーへの変更の影響を受けないようにします。

以上がNodeList を正しく反復する方法: getElementsByClassName の解決策?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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