為什麼更改「className」僅會影響 HTMLCollection 中的所有其他元素?
className 僅更改每個其他類別
在此程式碼片段中,遇到了一個問題,即className 屬性僅針對每個其他元素更改在一個集合中。目標是了解此行為背後的原因並找到解決方案。
提供的程式碼利用 getElementsByClassName() 方法來擷取具有「block-default」類別的 HTML 元素。然後,它繼續將集合中每個元素的 className 屬性修改為「區塊選擇」。然而,結果是只更新了替代元素,而其他元素則保留了原始的“block-default”類別。
罪魁禍首在於 HTMLCollections 的本質。這些集合是即時的並且反映了 DOM 的當前狀態。當元素的 className 屬性被修改時,集合本身也會受到影響。具體來說,由於修改的元素從清單中刪除,集合的大小會減少。
要修正此問題,請務必記住,對集合元素的任何後續變更都會影響其餘元素的索引。解決方案是一致地僅更改第一個元素的 className。
一種方法涉及迭代集合並重複修改第一個元素。
for (var i = 0; i < blockSetLength; i++) { blockSet[0].className = "block-selected"; }
此方法可確保第一個元素一致無論集合如何更改,都會更新。
或者,使用擴充運算子可以將 HTMLCollection 轉換為數組,從而在修改元素。
var blockArray = [...blockSet]; for (var i = 0; i < blockArray.length; i++) { blockArray[0].className = "block-selected"; }
無論哪種情況,僅修改第一個元素的 className,都可以實現更改集合中每個元素的類別的預期結果。
以上是為什麼更改「className」僅會影響 HTMLCollection 中的所有其他元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)
