【问题标题】:Logical OR not functioning逻辑 OR 不起作用
【发布时间】:2014-12-24 07:58:37
【问题描述】:

代码有问题吗?因为,当我删除语句中的 OR 时,我得到了正确的输出,但是当我插入 || 时,我得到的输出是 OR 运算符所在的语句中的内容。

 $(document).ready(function(){
        $("#select1").change(function(){
            if($(event.target).val() == 'AK'){
                    $("#select2").change(function(){
                        if($(event.target).val() == 'LLC'){
                            $('#txt6').val('250.00');
                        }else{
                            $('#txt6').val('250.00');
                        }
                    }); 
                }else if($(event.target).val() == 'AR'  || 'CO' || 'HI' || 'IA' || 'MS'){
                    $("#select2").change(function(){
                        if($(event.target).val() == 'LLC'){
                            $('#txt6').val('50.00');
                        } else{
                            $('#txt6').val('50.00');
                        }
                    });
            }else
            if($(event.target).val() == 'AZ'){
                    $("#select2").change(function(){
                        if($(event.target).val() == 'LLC'){
                            $('#txt6').val('50.00');
                        } else{
                            $('#txt6').val('60.00');
                        }
                    });
                }else
}else
        if($(event.target).val() == 'WI'){
                $("#select2").change(function(){
                    if($(event.target).val() == 'LLC'){
                        $('#txt6').val('103.00');
                    } else{
                        $('#txt6').val('103.00');
                    }
                });
            }else
        {
            $("#select2").change(function(){
                    if($(event.target).val() == 'LLC'){
                        $('#txt6').val('186.00');
                    } else{
                        $('#txt6').val('186.00');
                    }
                });
        }
    });
});

【问题讨论】:

  • 这是一个有效的 if 语句吗? $(event.target).val() == 'AR' || '一氧化碳' || '嗨' || 'IA' || '多发性硬化症'。不应该是 $(event.target).val() == 'AR' || $(event.target).val() == 'CO' || $(event.target).val() == 'HI' || $(event.target).val() == 'IA' || $(event.target).val() == 'MS'?

标签: jquery html if-statement logical-operators


【解决方案1】:

你不能这样做:

$(event.target).val() == 'AR'  || 'CO' || 'HI' || 'IA' || 'MS'

翻译成这样:

($(event.target).val() == 'AR')  || ('CO') || ('HI') || ('IA') || ('MS')

意思是这样的:

(<true/false>)  || true || true || true || true

你需要的是:

$(event.target).val() == 'AR'  ||
$(event.target).val() == 'CO' || 
$(event.target).val() == 'HI' || 
$(event.target).val() == 'IA' || 
$(event.target).val() == 'MS'

或者,您可以这样做:

var allowed = ['AR', 'CO', 'HI', 'IA', 'MS'];

if ($.inArray($(event.target).val(), allowed)) {...}

【讨论】:

    【解决方案2】:
    $(event.target).val() == 'AR'  || 'CO' || 'HI' || 'IA' || 'MS'
    

    应该是

    $(event.target).val() == 'AR'  || $(event.target).val() == 'CO' || $(event.target).val() == 'HI' || $(event.target).val() == 'IA' || $(event.target).val() == 'MS'
    

    这是人们犯的一个小错误,他们认为正确但写错了。因为通常我们认为:

    if value equals to xyz or pqr
    

    我们写

    if(value == "xyz" || "pqr")
    

    这是错误的,我们犯了这个错误是因为我们在词流中。应该是

    if(value == "xyz" || value == "pqr")
    

    改为。

    【讨论】:

      【解决方案3】:

      这一行

       }else if($(event.target).val() == 'AR'  || 'CO' || 'HI' || 'IA' || 'MS'){
      

      出错了。

      需要类似的东西

      }else if($(event.target).val() == 'AR'  || $(event.target).val() == 'CO' || $(event.target).val() =='HI ...
      

      【讨论】:

        【解决方案4】:

        || 连接独立的布尔条件,而不是字符串值。

        您可能想要这样做:

        if ( /^(AR|CO|HI|IA|MS)$/.test( $(event.target).val() ) )
        

        【讨论】:

        • 这和平等不一样——也许if ( /^(AR|CO|HI|IA|MS)$/.test( $(event.target).val() ) )会更好
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多