我正在使用这个小脚本来点击另一个元素来切换元素的类。这是精简代码:
//Toggle comments
function togglecomments() {
function shiftcomments() {
var comments = document.getElementsByTagName('aside')[0];
if(comments.className = "hide"){comments.className = "show";}
else{comments.className = "hide";};
}
var commenttoggle = document.getElementById('toggle-comments');
bindEvt(commenttoggle, "click", shiftcomments);
}
bindEvt(window, "load", togglecomments);
事情是它运作一次,但在此之后点击该类不再切换。对于那些感兴趣的人,我使用的是事件处理程序:http://pastebin.com/md3dPvMJ(它之前工作正常,所以不应该是问题。)
任何想法我做错了什么?
感谢您的反馈!
答案 0 :(得分:1)
在你的if语句中你得到了这个:
if(comments.className = "hide")
应该是:
if(comments.className === "hide")
这也有效:
if(comments.className == "hide")
你实际上在做什么是将className更改为“hide”,而不是检查是否相等。
对于==
和===
之间的区别,我实际上会在stackoverflow上指出另一个问题:Which equals operator (== vs ===) should be used in JavaScript comparisons?
答案 1 :(得分:0)
这是我正在使用的一个小函数,使用jQuery,但它可以更新。
toggleClass = function (obj, className) {
var currentClass = $(obj).attr('class'),
hasIt = false;
if (currentClass.indexOf(className) < 0) {
currentClass += " " + className;
hasIt = true;
} else {
currentClass = currentClass.replace(className, "");
hasIt = false;
}
$(obj).attr('class', currentClass);
return hasIt;
};