【发布时间】:2013-03-11 20:17:56
【问题描述】:
我写了一个函数来改变元素的类来改变它们的属性。由于某种原因,只有部分元素发生了变化。我花了几个小时才找到解决方案,但这对我来说似乎很奇怪。或许你可以给我解释一下。
这不起作用:
function replace(){
var elements = document.getElementsByClassName('classOne');
for (var i = 0; i < elements.length; i++) {
elements[i].className = 'classTwo';
}
}
See the JSFiddle:只有第二个项目受到影响;只有每隔一个红色元素才会将颜色变为蓝色。
所以我将for 循环的最终表达式更改为不再增加i:
function replace(){
var elements = document.getElementsByClassName('classOne');
for (var i = 0; i < elements.length; i) { // Here’s the difference
elements[i].className = 'classTwo';
}
}
这很好用!似乎push 被调用并且不需要增量。这是正常的吗?和我见过的例子不一样。
【问题讨论】:
-
我从未听说过“loop coefficient” 这个词。 JavaScript 将
for循环的最后一部分称为“final expression”(或在规范的某些上下文中为“increment”)和i++为“increment”(或在规范中概括为“UpdateExpression”)。跨度>
标签: javascript html getelementsbyclassname htmlcollection