2

我正在使用这个小脚本在单击另一个元素时切换元素的类。这是精简的代码:

//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(之前它工作得很好,所以它不应该是问题。)

任何想法我做错了什么?

感谢您的反馈家伙!

4

2 回答 2

1

在你的 if 语句中,你有这个:

if(comments.className = "hide")

它应该是:

if(comments.className === "hide") 

这也可以:

if(comments.className == "hide") 

你实际上在做什么是将className更改为“隐藏”,而不是检查是否相等。

对于和之间的区别=====我实际上会在 stackoverflow 向您指出另一个问题:JavaScript 比较中应该使用哪个等于运算符(== vs ===)?

于 2012-09-15T01:54:13.103 回答
0

这是我正在使用的一个小功能,带有 jQ​​uery,但它可以更新。

        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;
        };
于 2015-06-23T07:07:11.667 回答