javascript会更改一些类名
javascript changes one some class names
本文关键字:javascript 更新时间:2023-09-26
我的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
对象中的任何元素。您需要设置NodeList
中元素的className
。
document.getElementsByClassName(obj2)[0].className = 'none';
.getElementsByClassName()
方法应该返回NodeList(尽管根据MDN,大多数浏览器都返回HTMLCollection),这意味着你需要像数组一样访问它。因此,您不能直接在返回上设置.className
,而不是:
document.getElementsByClassName(obj2).className = 'none';
您需要:
var els = document.getElementsByClassName(obj2),
i;
for (i = els.length - 1; i >= 0; i--)
els[i].className = 'none';
// or if you know there will always be exactly one element returned:
document.getElementsByClassName(obj2)[0].className = 'none',
我将循环设置为倒计时的原因是NodeList应该是活动的,所以如果你开始修改列表中的元素,它们可能会从列表中消失,并扰乱你的计数器。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量