我的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';