逻辑或不起作用

时间:2014-12-24 07:58:38

标签: jquery html if-statement logical-operators

代码有问题吗?因为,当我在语句中删除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');
                    }
                });
        }
    });
});

4 个答案:

答案 0 :(得分:3)

你不能这样做:

$(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)) {...}

答案 1 :(得分: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")

代替。

答案 2 :(得分:0)

这一行

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

错误。

需要像

这样的东西
}else if($(event.target).val() == 'AR'  || $(event.target).val() == 'CO' || $(event.target).val() =='HI ...

答案 3 :(得分:0)

||加入独立且独立的布尔条件,而不是字符串值。

您可能希望这样做:

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