我写了一个函数来改变元素的类,从而改变它们的属性。但由于某些原因,只有部分元素发生了变化。我花了几个小时才找到解决方案,但这对我来说似乎很奇怪。也许你可以向我解释一下。
这不起作用:
function replace(){
var elements = document.getElementsByClassName('classOne');
for (var i = 0; i < elements.length; i++) {
elements[i].className = 'classTwo';
}
}
查看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
被调用时不需要增量。这正常吗?这与我见过的例子不同。
for
循环的最后一部分称为“final expression”(或在规范的某些上下文中称为“increment”),而i++
是一个“increment”(或者通俗地说,是规范中的“UpdateExpression”)。 - Sebastian Simon