为什么className不能改变所有指定的class值?
老师你好,我用document.getElementsByClassName的办法选中了class="first"的标签,查询className的时候也输出了4个first,想用下面的代码把class的值都改成"second",却只更改了2个,没有把4个class全部改过来,这是什么原因?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getElementBy</title>
</head>
<body>
<p class="first">空气</p>
<div class="first">空气</div>
<div class="first">空气</div>
<div class="first">空气</div>
<script>
var first=document.getElementsByClassName("first");
for(var i=0;i<first.length;i++){
console.log(first[i].className="second");}
</script>
</body>
</html>
正在回答
同学你好,关于同学的疑问,解答如下:
1、使用getElementsByClassName这种方法会随着文档操作而改变。假如通过getElementsByClassName获取元素,后面的代码中增加了一个新元素。那么前面获取的类数组中也会动态更新增加一个元素。可以参考下方的例子:
控制台
关于为什么会修改两个类名,可以参考上次回答中的注释。
2、getElementById方法不是动态的。像getElementsByTagName、getElementsByClassName这些方法是动态的。
3、是的。
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星