我的IF语句不正确吗?

时间:2014-12-08 13:57:36

标签: javascript if-statement

我有以下内容:

var detail = 'two';

function chkDetail(detail){
    if(detail == 'one') {
        jQuery('#valMsg').text('one');
    }
    if(detail == 'two') {
        jQuery('#valMsg').text('two');
    }
    if(detail == 'three') {
        jQuery('#valMsg').text('three');
    }
    else {
        jQuery('#valMsg').text('NO');
    } 
}

根据传递给我的函数的字符串,我希望将相应的消息传递到我的valMsg div。

在上面的场景中,我的函数不断返回NO

谁能告诉我为什么会这样?

if语句是否不正确?

4 个答案:

答案 0 :(得分:5)

应在所有陈述中添加else

function chkDetail(detail){
    if(detail == 'one') {
        jQuery('#valMsg').text('one');
    }
    else if(detail == 'two') {
        jQuery('#valMsg').text('two');
    }
    else if(detail == 'three') {
        jQuery('#valMsg').text('three');
    }
    else {
        jQuery('#valMsg').text('NO');
    } 
}

答案 1 :(得分:4)

你已经分开了条件。我会添加间距来说明:

// first condition
if(detail == 'one') {
    jQuery('#valMsg').text('one');
}

// second condition
if(detail == 'two') {
    jQuery('#valMsg').text('two');
}

// third condition
if(detail == 'three') {
    jQuery('#valMsg').text('three');
}
else {
    jQuery('#valMsg').text('NO');
}

例如,如果detail是“一个”,那么:

  • 第一个条件进入if区块
  • 第二个条件未进入if
  • 第三个条件未进入if块, 进入else块(因为else是逻辑逆if

如果它们都应该是相同的条件,请使用else if块:

// all one condition
if(detail == 'one') {
    jQuery('#valMsg').text('one');
}
else if(detail == 'two') {
    jQuery('#valMsg').text('two');
}
else if(detail == 'three') {
    jQuery('#valMsg').text('three');
}
else {
    jQuery('#valMsg').text('NO');
}

这样一旦输入一个区块,就会跳过其余区块,因为整个条件已经满足。

答案 2 :(得分:2)

else仅指前一个if,而不是所有if语句。

答案 3 :(得分:0)

此处提供的答案不会检查数据类型,这对检查至关重要。

var int1 = 1
var string1 = '1'

if(string1 == int1)会返回true,但它们实际上并不相同。

我会使用更好看代码的switch语句,并且还检查数据类型。

var detail = 'two';

function chkDetail(detail){
switch(detail){
case 'one' : jQuery('#valMsg').text('one'),
case 'two' : jQuery('#valMsg').text('two'),
default :  jQuery('#valMsg').text('No')
}

如果你想要使用多个if语句的路由,那么请使用===运算符来确保对数据类型进行检查。这样可以防止大量粗略的行为和错误。

    if(detail === 'one') {
        jQuery('#valMsg').text('one');
    }
    if(detail === 'two') {
        jQuery('#valMsg').text('two');
    }
    if(detail === 'three') {
        jQuery('#valMsg').text('three');
    }
    else {
        jQuery('#valMsg').text('NO');
    } 
}

请查看thisthis了解详情。