循环遍历节点列表 JS
Looping through a nodelist JS
我的问题是:我试图通过类热的节点列表。我想将他们的类名更改为"酷"。当 ibe 使用 for 循环时,似乎它是第二个 li 不会改变颜色。有谁知道我在这里犯了什么错误,第二个 li 元素不会改变颜色.
谢谢
var elements = document.getElementsByClassName('hot');
var i;
for(i = 0; i < elements.length; i++) {
elements[i].className = 'cool';
}
*{
box-sizing: border-box;
}
.hot {
background-color: red;
border: 1px solid black;
padding: 10px;
margin-top: 1px;
font-size: 25px;
list-style-type: none;
}
.cool {
background-color: blue;
padding: 10px;
color: white;
font-size: 25px;
}
<html>
<body>
<div id="page">
<h1 id="header">List</h1>
<h2>Buy Greoceries</h2>
<ul>
<li id="one" class="hot"><em>Fresh</em>figs</li>
<li id="two" class="hot">pine nuts</li>
<li id="three" class="hot">honey</li>
<li id="four">balsamic vinegear</li>
</ul>
</div>
</body>
</html>
getElementsByClassName
返回一个活动节点列表。一旦你改变了一个元素的类,节点列表就会更新以反映这一点,所以你的索引将始终处于状态。
缓解此问题的一种方法是使用以下Array.slice.call
将节点列表转换为静态节点列表:
var elements = [].slice.call(document.getElementsByClassName('hot'));
演示
正如您所指出的,另一种方法是使用 document.querySelectorAll
返回静态节点列表:
document.querySelectorAll('.hot');
演示
相关文章:
- 使用图像数组列表的simplegallary.js显示适合桌面屏幕的图像
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 如何使用PHP和JS级联三个下拉列表
- D3.JS向rect添加缩放和列表项
- 使用js或extjs访问对象的java列表
- 参数列表Three.js之后的未捕获语法错误:缺少)
- Knockout JS中具有下拉列表的数组
- 使用js将动态内容添加到选择选项列表中
- 在underscore.js中显示列表中的所有项目(使用Parse.com)
- 如何按骨干.js打印“此”列表项的文本
- 从文本文件js中读取列表
- knockout.js中的绑定多下拉列表
- 使用JS或新查询对列表进行排序
- 如何更改列表.js列表对象中的选项
- 正在更新Immutable.js列表中的所有对象
- 如何销毁Nestable.js列表
- 在jquery对象的集合上使用underscore.js列表函数
- 为什么2个immutable.js列表是完全不同的
- 如何更新或添加到immutable.js列表
- 数组中的纯JS列表