我的JavaScript函数仅更改了4个类中的两个。如果我再次单击它,它将更改第三个,但是将完全忽略最后一个。

function move(obj,obj2) {
    var _elements = document.getElementsByClassName(obj);
    document.getElementsByClassName(obj2).className = 'none';

    for( var i = 0; i < _elements.length; i ++){
        _elements[i].className ='none';
    }
}


<a href="javascript: move('bigbox','bigbox_submit');"  id="closebigbox" >Clear</a>

<form>
    <input type="text" class="bigbox" /><br/>
    <input type="text" class="bigbox" /><br/>
    <input type="text" class="bigbox" /><br/>
</form>
<a href="javascript:" class="bigbox_submit" >Submit</a>


我如何使其停止执行并同时执行。

最佳答案

方法document.getElementsByClassName()返回一个NodeList,它是一个“活动”对象。也就是说,随着DOM的更改,NodeList实例也随之更改。因此,每次更改节点列表中元素之一的类时,该元素便会从节点列表中删除,因为它不再与该类匹配。您可以改用while循环:

var _elements = document.getElementsByClassName(obj);
while (_elements.length) {
    _elements[0].className ='none';
}


第二个问题是您正在将名为className的属性分配给NodeList对象。这不会影响该NodeList对象中的任何元素。您需要在className中设置元素的NodeList

document.getElementsByClassName(obj2)[0].className = 'none';

10-06 07:37
查看更多