更改类名问题(javascript和IE)

更改类名问题(javascript和IE),javascript,internet-explorer,classname,Javascript,Internet Explorer,Classname,以下javascript代码无法正常工作。(我正在使用IE9,无法使用其他浏览器或JQuery): var elems=document.getElementsByClassName(“EditableTextBox”); 对于(var i=0;i

以下javascript代码无法正常工作。(我正在使用IE9,无法使用其他浏览器或JQuery):

var elems=document.getElementsByClassName(“EditableTextBox”);
对于(var i=0;i
发生的情况是,只有一些类名为“EditableTextBox”的元素被更改为类名为“零”,许多元素仍保留类名为“EditableTextBox”。没有可能导致此问题的其他代码;这段代码是我在刷新屏幕之前执行的最后一段代码

我认为问题在于.GetElementsByCassName找不到所有正确的元素,但是:

var elems = document.getElementsByClassName("EditableTextBox");
for (var i = 0; i < elems.length; i++) {                
    elems[i].value = "test";
}
var elems=document.getElementsByClassName(“EditableTextBox”);
对于(var i=0;i
此代码会将所有正确元素的值更改为“test”,因此.getElementsByClassName会正确查找所有元素

我不明白是什么导致了这里的问题。下面是我的解决方法,但是有更多经验的人可以解释为什么第一块代码不起作用吗?多谢各位

如果有人感兴趣,我的解决方法是:

var elems = document.getElementsByTagName("input");
for (var i = 0; i < elems.length; i++) {
    if (elems[i].className == "EditableTextBox")
       elems[i].className = "Zero";
var elems=document.getElementsByTagName(“输入”);
对于(变量i=0;i

谢谢。

GetElementsByCassName
似乎返回了一个活动集,因此当您更改任何项目的类别时,该集将立即更新,并将跳过其他项目。相反,请执行循环:

for (var i = elems.length - 1; i >= 0; --i) {                
    elems[i].className = "Zero";
}

另一种选择是:

while(list.length!=0) {
    list[0].className = 'Zero';
}

这样你就知道你不会错过任何元素。

不错的一个!它很有效,而且很清楚为什么不起作用。非常感谢。可能是重复的
while(list.length!=0) {
    list[0].className = 'Zero';
}