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