使用NodeList(getElementsByClassName 函數的回傳值)時,使用正確的迭代方法至關重要,以避免意外行為,例如更改長度和元素順序。
理解NodeLists
與陣列不同,NodeLists 是根據 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中文網其他相關文章!