IF语句在JS中不起作用

时间:2015-05-12 09:46:15

标签: javascript jquery

我有这个功能,但我不知道“开关”会更好吗?

(function ($) {
    var doc = $.urlParam('doc');
    if (doc) {
        if (doc = 'new') {
            alert(doc);
        }
        if (doc = 'new2') {
            alert(doc);
        }
        if (doc = 'new3') {
            alert(doc);
        }
    }
})(jQuery);

警报只应显示URL中的参数是否正确,如IF语句中所示。

完整的代码可以在这里找到:https://jsfiddle.net/yc5f9ct7/4/

3 个答案:

答案 0 :(得分:3)

您必须使用==而不是=来检查if语句中的相等性:

 (function ($) {

 var doc = $.urlParam('doc');


 if (doc) {
        if (doc == 'new') {
            alert(doc);

        }
        if (doc == 'new2') {
            alert(doc);

        }
        if (doc == 'new3') {
            alert(doc);

        }
    }

})(jQuery);

答案 1 :(得分:2)

如前所述,需要双等号,但您也可以将其缩短为:

(function ($) {
    var doc = $.urlParam('doc');
    if (doc) {
        if (doc == 'new' || doc == 'new2' || doc == 'new3') {
            alert(doc);
        }
    }
})(jQuery);

答案 2 :(得分:1)

正如大家所指出的,您使用的是作业=,而不是比较==或完全比较===

除此之外,如果您正在为多个值测试一个变量,并且打算在每个变量上使用不同的代码,那么切换更合乎逻辑:

var doc = $.urlParam('doc');
switch (doc){
    case 'new':
        alert(doc);
        break;
    case 'new2':
        alert(doc);
        break;
    case 'new3':
        alert(doc);
        break;
}

另请注意:看起来就像你的代码想要将最后一部分包装在DOM就绪处理程序中一样,但是你将它包装在IIFE中。将包装器更改为jQuery(function($){ YOUR CODE HERE });

e.g。

jQuery(function($){
    var doc = $.urlParam('doc');
    switch (doc){
        case 'new':
            alert(doc);
            break;
        case 'new2':
            alert(doc);
            break;
        case 'new3':
            alert(doc);
            break;
    }
});

这个方便的 DOM ready 快捷方式提供了一个本地范围的$