2012-07-20 81 views
0

希望在这里的任何帮助新手。我有一个简单的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'); 
} 

}); 

回答

1

只是另一个apporoach:

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; 
    } 
+0

+1。其他答案解释了为什么原文不起作用,但当所有条件都测试相同的值时,转换语句更有意义。 – nnnnnn 2012-07-20 01:24:53

+0

@nnnnnn谢谢你,其他的答案已经解释了他会出错的地方。 – sabithpocker 2012-07-20 01:27:17

+0

它的工作原理!感谢您花时间向像我这样的新手解释这一点。我很感激! – beatmusic67 2012-07-20 19:12:44

0

你不能比比字符串以这种方式,你可以使用$.inArray()功能 ,而不是创造价值的数组:

jQuery.inArray(值,数组[,fromIndex])

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

} 
+0

非常感谢! – beatmusic67 2012-07-20 19:14:25

5

你不能在if using语句逗号多个条件:

if ($(this).val() == 'green', 'trees', 'fairway', 'rough', 'sand')

相反,可以使值列表到一个数组中,并检查你的价值是数组中:

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

要在组合多个条件如果,语法是本(远长于以上):

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

@raminson对不起,错字。感谢您指出错误 – nbrooks 2012-07-20 01:14:14

+0

谢谢!我很感激。 – beatmusic67 2012-07-20 19:08:41

+0

@ beatmusic67没问题,很乐意帮忙。如果此(或任何其他)答案有帮助,请点击左侧的复选标记(在投票计数下)将其“接受”为绿色。你只能接受一个答案,所以接受你最好的帮助。 – nbrooks 2012-07-20 22:06:49