Javascript 如何更改document.getElementsByClassName检索的所有元素的类
我有一个包含3行的表。每行都有一个类:Javascript 如何更改document.getElementsByClassName检索的所有元素的类,javascript,html,Javascript,Html,我有一个包含3行的表。每行都有一个类:.myClass 然后,我使用document.getElementsByCassName('myClass')查询表行,并迭代元素,将每行的类更改为.otherClass 但是, console.log(document.getElementsByClassName('otherClass')) 只返回了一行 当我查看DOM时,只有第一个.myClass行的类更改为.otherClass;另一个保持不变 如何将所有.myClass行的类更改为.other
.myClass
然后,我使用document.getElementsByCassName('myClass')
查询表行,并迭代元素,将每行的类更改为.otherClass
但是,
console.log(document.getElementsByClassName('otherClass'))
只返回了一行
当我查看DOM时,只有第一个.myClass
行的类更改为.otherClass
;另一个保持不变
如何将所有.myClass
行的类更改为.otherClass
var c=document.getElementsByClassName('myTable')[0];
var x=c.getElementsByClassName('myClass');
对于(变量i=0;i
内容
内容
内容
内容
内容
内容
GetElementsByCassName
与其他HTML集合一样,是“活动”的,也就是说,当您将另一个类名分配给其成员时,它会动态地从集合中删除,并且其长度会递减。这就是为什么循环只运行一次
var x=document.getElementsByClassName('myClass');
警报(“之前:+x.length”);
x[0]。className='otherClass';
警报(“在:+x.length之后)代码>
.myClass{color:black}
.otherClass{color:red}
hi
hi
As,返回一个集合。这意味着数组将随着元素的变化而“更新”
要解决问题,应该使用while循环,在x.length
存在时迭代,并且只更改HTMLCollection
的第一个元素
var c=document.getElementsByClassName('myTable')[0];
var x=c.getElementsByClassName('myClass');
while(x&&x.length){
x[0]。类名='otherClass'
}
var y=c.getElementsByCassName('otherClass');
警报(y长度)代码>
.myClass{
显示:块;
背景色:红色;
}
.其他类别{
显示:块;
背景颜色:绿色;
}
内容
内容
内容
内容
内容
内容
乔治是对的。元素数组是动态更新的,所以不能依赖于它的长度
请尝试以下代码:
var c = document.getElementsByClassName('myTable')[0],
x = c.getElementsByClassName('myClass');
while (x.length) {
x[0].className = 'otherClass';
}
var y = c.getElementsByClassName('otherClass');
alert(y.length);
另一个选项是用元素填充普通数组,然后遍历该数组。
您将能够通过这种方式偶然获得元素的类名。我在html中看不到其他类。var x=c.getElementsByClassName('otherClass')代码>不要重新声明x
@BhojendraNepal,他将其设置为code@BhojendraNepalx[i].className='otherClass'
@royhowie,这是不正确的,但不会引起任何问题这对我来说是新闻-我从来都不知道数组是“活的”。我假设(我想大多数人都会这样认为),通过.getElementsByCassName
创建的数组不会因为对包含的对象的更改而更改them@freefaller它不完全是一个数组;是的,我也不知道。那么,如果您想修改getElementsByClassName获得的项的类名,您如何解决这个问题呢?@Mitre仅在集合具有长度时进行迭代,而该解决方案在while中有效。谢谢你的回答。