if else语句不按预期工作

时间:2012-07-20 00:55:42

标签: javascript jquery conditional-statements if-statement

非常感谢这里对新手的任何帮助。我有一个简单的if / else if语句,由于某种原因只能达到第二个条件,即使满足第三个条件。我已经尝试过添加其他东西,尝试了几乎所有东西,但仍然没有。我知道它不起作用,因为我添加了警报触发器,无论它从未达到第三个条件。我在这里错过了什么?我周围环顾了很多,所以如果我在这里打死马,我很抱歉,但我找不到解决办法。我应该注意到,我正在尝试更改选择下拉框的条件。感谢!!!

我的代码:

$('#table_two select:eq(6)').change(function(e){

var allDiv = $('#table_two,#table_three,#table_four');
var parBoxOne = $('#par_one').val();

var totalOne = 1 - parBoxOne;
var totalTwo = 2 - parBoxOne;


if ($(this).val() == "made_shot"){
$(allDiv).hide();
$('#score_one').val(totalOne);
$('#score_total').val($('.score_input').val());
alert('ACE!!');
}

else if ($(this).val() == 'green', 'trees', 'fairway', 'rough', 'sand' ){
$('#score_one').val(totalOne);
$('#score_total').val($('.score_input').val());
$('#table_two').hide();
$('#butt_two').html('Show stroke');
alert('triggered two');
}

else if ($(this).val() == 'other', 'penalty_water', 'penalty_ob', 'penalty_sand' ){
$('#score_one').val(totalTwo);
$('#score_total').val($('.score_input').val());
$('#table_two').hide();
alert('triggered three');
}

});

3 个答案:

答案 0 :(得分:5)

您无法使用逗号组合if语句中的多个条件:

<德尔> if ($(this).val() == 'green', 'trees', 'fairway', 'rough', 'sand' )

相反,您可以将值列表放入一个数组中,并检查您的值是否在数组中:

var stuff = ['green', 'trees', 'fairway', 'rough', 'sand'];
if ( $.inArray($(this).val(), stuff ) >= 0 )

要在if中组合多个条件,语法就是这个(比上面的长得多):

if ($(this).val() == 'green' || $(this).val() == 'trees' || ... )

答案 1 :(得分:1)

另一种方法:

switch($(this).val()){
    case 'made_shot':
        $(allDiv).hide();
        $('#score_one').val(totalOne);
        $('#score_total').val($('.score_input').val());
        alert('ACE!!');
        break;

    case 'green':
    case 'trees':
    case 'fairway':
    case 'rough':
    case 'sand':
        $('#score_one').val(totalOne);
        $('#score_total').val($('.score_input').val());
        $('#table_two').hide();
        $('#butt_two').html('Show stroke');
        alert('triggered two');
        break;

    case 'other':
    case 'penalty_water':
    case 'penalty_ob':
    case 'penalty_sand':
        $('#score_one').val(totalTwo);
        $('#score_total').val($('.score_input').val());
        $('#table_two').hide();
        alert('triggered three');
        break;
    }

答案 2 :(得分:0)

你不能以这种方式驻扎字符串,你可以使用$.inArray()函数 而是创建一个值数组:

  

jQuery.inArray(value,array [,fromIndex])

 if($.inArray($(this).val(), ['green', 'trees', 'fairway', 'rough', 'sand']) != -1) {

 }