首頁 > web前端 > css教學 > 主體

為什麼更改「className」僅會影響 HTMLCollection 中的所有其他元素?

Susan Sarandon
發布: 2024-11-28 03:09:10
原創
679 人瀏覽過

Why Does Changing `className` Only Affect Every Other Element in an 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板