单个Javascript多个语句如果不起作用

时间:2016-03-08 21:57:58

标签: javascript

我有20个div,每个都有一个speficif类,所以我选择它并检查4个'特殊'中是否有1个。

主要问题是以下代码应该有用......

$('.cbp-ig-grid li, .cbp-ig-grid li a span object').on('click', function () {
        /* Variables Definition */
        var item = $(this).find('span').attr('class').split(' ')[1]
}


   if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')){


// Always enters here!

}else{

    // Never enters here :(  (I need to enter here for the 4 cases in the if statement)

    }

但当我只做一个......它有效!

if(item != 'item1'){


// do stuff

}else{

    // do other stuff

    }

我不知道我做错了什么,请任何有用的帮助

4 个答案:

答案 0 :(得分:2)

考虑你的if语句:

if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')){

}

这说的是,如果这些条件中的任何一个为真,则满足if条件并执行if块。

我们说该项目为"item2"现在您的if语句的第一个表达式已满足,因为它不是item1,因此该部分为真。因此它执行块。 你想要的是:&&

if((item != 'item1') && (item != 'item2') && (item != 'item3') && (item != 'item4')){
    //when it's not the special case.
}
else
{ 
   //the 4 special cases.
}

答案 1 :(得分:2)

if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')){

没有机会进入其他地方... item 总是与其中一个不同。

答案 2 :(得分:2)

.hasClass()是你最好的朋友。 https://api.jquery.com/hasclass/

$('.cbp-ig-grid li, .cbp-ig-grid li a span object').on('click', function () {
    /* Variables Definition */
    var item = $(this).find('span');

    switch(true) {
        case item.hasClass('item1'):
            // item 1
        break;

        case item.hasClass('item2'):
            // item 2
        break;

        case item.hasClass('item3'):
            // item 3
        break;

        case item.hasClass('item4'):
            // item 4
        break;

        default:
            // other stuff
    }
});

答案 3 :(得分:1)

让它变得简单

if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4'))

让我们测试一下:

1:

item = 'item1':
false || true || true || true
that equals to true; because false || true = true

2:

item = 'theGreatOldOnes'
true || true || true || true - that equal to true

两者都是真的!这意味着你的表达方式存在缺陷 - 它并没有区别于特殊类别'以及任何非特殊类'

让它理解“特殊”与“特殊”之间的区别。并且“不特别”'你需要使用:

if((item != 'item1') && (item != 'item2') && (item != 'item3') && (item != 'item4'))

或者

if((item === 'item1') || (item === 'item2') || (item === 'item3') || (item === 'item4'))

您可以使用' item1'进行测试和#GoodOldOnes'为了更好地掌握这些东西^ ^