对于循环,每次迭代后跳过一次

sev*_*kul 3 javascript algorithm

我有一个HTML元素列表,其中包含"black"类(以及其他一些类).我想将"黑色"转换为"白色".我写了以下代码.

var blacks = document.getElementsByClassName("black");
for (i = 0; i < blacks.length; i++)
    blacks[i].className = blacks[i].className.replace('black', 'white');
Run Code Online (Sandbox Code Playgroud)

有趣的是,一个元素变为白色,一个元素被跳过,直到元素结束.也就是说,具有偶数序的元素保持不变.转换所有黑人我错过了什么?

Esa*_*ija 7

document.getElementsByClassName返回当您对其所代表的DOM部分进行更改时自动更新的实时NodeList.您将其视为静态列表.您可以通过将其转换为数组来实现:

var blacks = [].slice.call(document.getElementsByClassName("black"));
Run Code Online (Sandbox Code Playgroud)

我突然想到你也可以:

var blacks = document.querySelectorAll(".black"); //NodeList but static
Run Code Online (Sandbox Code Playgroud)