<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.red {
color: red;
}
.green {
color: green;
}
</style>
</head>
<body>
<ul>
<li class="red">哈哈0</li>
<li class="red">哈哈1</li>
<li class="red">哈哈2</li>
<li class="red">哈哈3</li>
<li class="red">哈哈4</li>
</ul>
<script>
var liArr = document.getElementsByClassName('red');//一绿一红
// var liArr = document.querySelectorAll('.red');//全绿
for (var i = 0; i < liArr.length; i++) {
liArr[i].className = 'green';
}
</script>
</body>
</html>
感谢各位指点,找到问题答案了.
后面是一个小结:
https://icbd.github.io/wiki/w...
代码自上而下执行,照你的代码是一开始
className
是red
,执行到for
循环的时候,更新className
为green
。写成这样你就明白了
这是document.getElementsByClassName和document.querySelectorAll的返回值不同造成的,W3C规定:前者的返回值是一个动态的 Node List,后者返回的是一个静态的 Node List,类似于快照。https://www.zhihu.com/questio...