Javascript getElementsByClassName异常行为,跳过某些元素

Javascript getElementsByClassName异常行为,跳过某些元素,javascript,html,getelementsbyclassname,Javascript,Html,Getelementsbyclassname,我对getElementsByClassName有一些非常奇怪的行为,我不确定是什么导致了它 如果我尝试将所有元素从类B交换到类A,它只交换某些元素,如下所示: 函数交换类(){ //获取类B的所有元素 const classBList=document.getElementsByClassName(“classb”); 对于(var i=0;i{ div.classList.add(“classa”); div.classList.remove(“classb”); //交换文本 div.t

我对getElementsByClassName有一些非常奇怪的行为,我不确定是什么导致了它

如果我尝试将所有元素从类B交换到类A,它只交换某些元素,如下所示:

函数交换类(){
//获取类B的所有元素
const classBList=document.getElementsByClassName(“classb”);
对于(var i=0;i
.classa{
背景色:红色;
}
.B类{
背景颜色:绿色;
}
A类
B类
B类
B类
B类

将类B交换为类A
您可以使用querySelectorAll和classList,而不是使用getElementsByClassName获得的活动节点列表

函数交换类(){
//获取类B的所有元素
[…document.queryselectoral(“.classb”)].forEach(div=>{
div.classList.add(“classa”);
div.classList.remove(“classb”);
//交换文本
div.textContent=“A类”;
})
}
.classa{
背景色:红色;
}
.B类{
背景颜色:绿色;
}
A类
B类
B类
B类
B类

将B类交换到A类
getElementsByClassname返回一个“实时HTMLCollection”。。。因此,通过更改
classElem.className=“classa”更改集合-建议您使用
document.querySelectorAll(“.classb”)
并避免问题-请参阅并阅读警告:p