Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Javascript更改所有元素的css类_Javascript_Css_Class_Styles_Dojo - Fatal编程技术网

用Javascript更改所有元素的css类

用Javascript更改所有元素的css类,javascript,css,class,styles,dojo,Javascript,Css,Class,Styles,Dojo,基本上,我试图找到所有具有特定类名的元素,并将其切换到另一个。我有另一个函数,可以将其切换回原始类名。以下是我的函数,它是通过onclick触发的: function showEventsAppliedTo() { var myObj = document.getElementsByClassName('notApplied'); while (myObj.length >= 0) { myObj[0].className = 'mblListItem no

基本上,我试图找到所有具有特定类名的元素,并将其切换到另一个。我有另一个函数,可以将其切换回原始类名。以下是我的函数,它是通过onclick触发的:

function showEventsAppliedTo() {
    var myObj = document.getElementsByClassName('notApplied');
    while (myObj.length >= 0) {
        myObj[0].className = 'mblListItem notAppliedOut';
    }
    AppliedToButton.set('style', 'display:none;');
    EventListingButton.set('style', 'display:block;');
}
我收到一个错误,说myObj[0]未定义。知道为什么会这样吗

注意,我们使用的是Dojo,因此是函数的最后一行。我知道我可以很容易地用jQuery实现这一点,但我们没有使用它,加载另一个框架也没有意义

提前感谢你的帮助

编辑

多亏了阿披舍克·米什拉的帮助,我修改了处理这个循环的方式,并找到了一种使用dojo的方法,这是我更喜欢的方法。代码如下:

function listingClassToggle() {
    dojo.query(".notApplied").addClass("notAppliedOut");
    dojo.query(".notApplied").removeClass("notApplied");
}

与我以前的解决方案相比,代码更简单,重量更轻。谢谢你的帮助。我希望这对其他人有帮助

应该只测试
>0
而不是
>=0
。当长度等于零时,就没有零元素。

哦,是的,就是这个<代码>0表示没有元素了!:-)我在想
while(myObj[0]){…
这就解释了为什么函数似乎在正确地执行所有操作,并在最后抛出了一个错误。这样做了,谢谢!请参阅上面的编辑,了解如何仅使用Dojo功能而不是运行“while”语句。您可以使用Dojo的
forEach
在myObj上循环,然后就不需要检查了对于零..也
dojo.query
用于基于css的查询,这将是
dojo.query('.notApplied'))
我想知道这是否会比我正在使用的方法运行得更快?下面的答案修复了它,但我也要研究一下这个方法。这个查询方法可能比getElement更好。我相信dojo的
查询
会更兼容各种浏览器。
getElementsByCassName
很好,但在IE 7和8中不起作用;)Goo我很想知道!在这种情况下,现在实现它而不是以后再使用它是有意义的!谢谢。我按照你的建议,最终使用了这个'dojo.query(.notApplied').addClass(.notAppliedOut”);dojo.query(.notApplied”).removeClass(.notApplied)而且它工作得很好!我只需切换语句中的类即可将其切换回原来的状态。谢谢您的帮助!