我的“切换类”javascript无效

时间:2012-09-15 01:49:31

标签: javascript

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

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

任何想法我做错了什么?

感谢您的反馈!

2 个答案:

答案 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;
        };