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

Javascript multiple statements in a single if not working

本文关键字:语句 如果 不起作用 单个 Javascript      更新时间:2023-09-26

我有 20 个div,每个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
    }

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

考虑你的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.
}
if((item != 'item1') || (item != 'item2') || (item != 'item3') || (item != 'item4')){

没有机会在这里进入其他... item总是与一个或另一个不同。

.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
    }
});

让我们让它变得简单

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

让我们测试一下:

1:

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

阿拉伯数字:

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"和"theGreatOldOnes"进行测试,以更好地掌握这些东西^ ^