更改className问题(javascript和IE)

leo*_*ios 2 javascript internet-explorer classname

以下javascript代码无法正常运行。(我使用的是IE9,不能使用其他浏览器或JQuery):

var elems = document.getElementsByClassName("EditableTextBox");
for (var i = 0; i < elems.length; i++) {                
    elems[i].className = "Zero";
}
Run Code Online (Sandbox Code Playgroud)

发生的情况是,只有某些具有className“ EditableTextBox”的元素被更改为className“ 0”,许多元素仍保留为className“ EditableTextBox”。没有其他代码可能会导致此问题。此代码是刷新屏幕之前我执行的代码的最后一部分。

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

var elems = document.getElementsByClassName("EditableTextBox");
for (var i = 0; i < elems.length; i++) {                
    elems[i].value = "test";
}
Run Code Online (Sandbox Code Playgroud)

这段代码确实将所有正确元素的值更改为“ test”,因此.getElementsByClassName确实可以找到所有元素。

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

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

var elems = document.getElementsByTagName("input");
for (var i = 0; i < elems.length; i++) {
    if (elems[i].className == "EditableTextBox")
       elems[i].className = "Zero";
Run Code Online (Sandbox Code Playgroud)

谢谢。

Ja͢*_*͢ck 5

getElementsByClassName仿佛回到现场设置,所以当你改变类组将立即被更新的任何项目,它会跳过对方项目。反向执行循环:

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