首先,对不起我的英语不好......getElementsByClassName方法 - 奇怪的行为
我写了一个函数来改变类元素来改变其性质。 出于某种原因,只有一些元素发生了变化,我花了几个小时才找到解决方案,但他对我来说似乎很古怪,也许你可以向我解释。
function replace(){
var elements = document.getElementsByClassName('classOne');
for (var i=0; i<elements.length;i++) {
elements[i].className = 'classTwo';
}
}
不工作为好,Demo here,[对铬25和FF],所以我把循环系数:
function replace(){
var elements = document.getElementsByClassName('classOne');
for (var i=0; i<elements.length;i) { //----here the different --- i without ++
elements[i].className = 'classTwo';
}
}
这非常适用!似乎被称为“推”,并没有系数需要... 这是正常的?这与我见过的例子不同。
在此先感谢!
给予好评的答案和解释 – 2013-03-22 04:08:40
谢谢!听起来没错.. 但是...它是有意义的编程? “元素”是一个存在的对象,而不是动态的对象,没有你可以改变? – MeNa 2013-03-22 04:38:12
@MeNa - 尽管'elements'变量对你的函数是局部的,它所引用的数组也可以被DOM访问(并由其维护)。每个元素的'className'属性实际上触发了DOM机制中的setter函数。该函数的一个副作用是从元素引用的数组中移除该元素。所以它不会改变“没有你”;它会因为您更改其某个元素的'className'属性而发生更改。引用旧的圣贤:_“这不是一个错误,这是一个功能!”_ – 2013-03-22 04:47:04