基本上,我正在尝试查找所有具有特定类名的元素并将其切换到另一个类名。我还有另一个函数,可以将其切换回原始类名。这是我的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;');
}
我收到一个错误,说我的Obj[0]未定义。你知道为什么会这样吗?
顺便提一下,我们正在使用Dojo,因此函数的最后一行就是如此。我知道我可以轻松地使用jQuery完成这个任务,但我们不使用它,加载另一个框架也没有意义。
感谢您的帮助。
编辑
感谢Abhishek Mishra的帮助,我修改了处理这个循环的方式,并找到了一种只使用Dojo的方法,这正是我所需要的。以下是代码:
function listingClassToggle() {
dojo.query(".notApplied").addClass("notAppliedOut");
dojo.query(".notApplied").removeClass("notApplied");
}
比起我之前的解决方案,这段代码简单得多而且更加轻量级。感谢您的帮助。我希望这能对其他人有所帮助。
forEach
循环遍历myObj,这样就不需要检查零值了。http://dojotoolkit.org/reference-guide/1.7/dojo/forEach.html。此外,还可以使用基于CSS的查询的`dojo.query`,例如:`dojo.query('.notApplied');` - Abhishek Mishraquery
在各种浏览器上都更兼容。getElementsByClassName
虽然不错,但在IE 7和8中无法使用;) http://caniuse.com/#search=getElementsByClassName - Abhishek Mishra