慕碼人8056858
2023-07-14 10:17:41
我有一些 HTML 代碼,如下所示:<html><head></head><body><span class="cls1">test</span><span class="cls1">test</span><span class="cls1">test</span><span class="cls1">test</span><span class="cls1">test</span><span class="cls1">test</span><span class="cls1">test</span><style> .cls1 { color: red; } </style></body></html>然后我想使用一些 JavaScript 代碼來切換cls1這些元素的類。我輸入了這些行。輸出也如下:> for (elem of document.getElementsByClassName("cls1")) { console.log(elem); elem.classList.toggle("cls1") }<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65false> for (elem of document.getElementsByClassName("cls1")) { console.log(elem); elem.classList.toggle("cls1") }<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65false> for (elem of document.getElementsByClassName("cls1")) { console.log(elem); elem.classList.toggle("cls1") }<span class="cls1">debugger eval code:1:65false> for (elem of document.getElementsByClassName("cls1")) { console.log(elem); elem.classList.add("cls1") }undefined> for (elem of document.getElementsByTagName("span")) { console.log(elem); elem.classList.add("cls1") }<span class="">debugger eval code:1:63<span class="">debugger eval code:1:63<span class="">debugger eval code:1:63<span class="">debugger eval code:1:63<span class="">debugger eval code:1:63<span class="">debugger eval code:1:63<span class="">debugger eval code:1:63undefined> for (elem of document.getElementsByClassName("cls1")) { console.log(elem); }<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65<span class="cls1">debugger eval code:1:65undefined我認為錯誤的是,document.getElementsByClassName可以找到所有七個元素,但elem.classList.toggle只適用于其中的一半。這對我來說是一個荒謬的問題。這里出了什么問題?
1 回答

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
請.querySelectorAll()
改為使用,
與往常一樣,返回的集合是實時的,這意味著它始終反映以調用該函數的元素為根的 DOM 樹的當前狀態。當與名稱匹配的新元素添加到子樹時,它們會立即出現在集合中。同樣,如果與名稱不匹配的現有元素已調整其類集以使其匹配,則它會立即出現在集合中。
反之亦然;當元素不再與名稱集匹配時,它們會立即從集合中刪除。
let elements = document.querySelectorAll(".cls1");
for(let elem of elements) {
? console.log(elem);
? elem.classList.toggle("cls1");
}
.cls1 {
? color: red;
}??
<span class="cls1">test</span>
<span class="cls1">test</span>
<span class="cls1">test</span>
<span class="cls1">test</span>
<span class="cls1">test</span>
<span class="cls1">test</span>
<span class="cls1">test</span>
添加回答
舉報
0/150
提交
取消