javascript if if语句检查true / false

时间:2014-08-25 20:23:04

标签: javascript jquery

我写道,我认为,这是JS中的直接if语句,但运行不正确。

function printLetter(LetterId) {
    var studentflag = $("#IsStudent").val();
    if (studentflag)
    {
           //do option 1        
    } else {

           //do option 2    
    }

}

每次运行时,studentflag var值都是正确的,但无论是true还是false,它都会进入选项1.我很确定我已经完成{ {1}} / true之前在JS中进行了这样的检查,但我是否需要拼出false来代替?

5 个答案:

答案 0 :(得分:6)

这被称为 truthy falsy

以下值始终为 falsy

  • 0(零)
  • "" (空字符串)
  • 未定义
  • NaN(一个特殊的数字值,意思是非数字!)

所有其他值真实

  • 包括"0"(引号为零),
  • "false"(引号中为false),例如if (studentflag) //being studentflag "false"
  • 空函数,
  • 空数组,
  • 空对象。

答案 1 :(得分:3)

如果#StudentFlag"true""false",则if(studentFlag)将始终遵循true路由,因为两者都是非空字符串(真实的)。你需要按照这些方针做点什么:

var studentflag = $("#IsStudent").val();
if (studentflag === "true") {
       //do option 1        
} else {
       //do option 2    
}

答案 2 :(得分:2)

.val ()没有返回布尔值。

试试这个;

function printLetter(LetterId) {
    var studentflag = $("#IsStudent").is (':checked');
    if (studentflag)
    {
           //do option 1        
    } else {

           //do option 2    
    }

}

这是假设#IsStudent是一个复选框。如果不是,请尝试这个(假设值为true(作为字符串,而不是布尔值));

function printLetter(LetterId) {
    var studentflag = ($("#IsStudent").val () == 'true')
    if (studentflag)
    {
           //do option 1        
    } else {

           //do option 2    
    }

}

答案 3 :(得分:2)

IMO在问题中应该有更多的背景。如果提交的解决方案适用于非常好的OP,但对于将其用作资源的其他人来说,接受的解决方案可能无法在所有情况下都有效。

通过JS从元素检索的值实际上取决于输入本身及其HTML结构。这是一个演示,解释了使用.val().attr('val').is(':checked')与复选框和无线电之间的区别。所有这些变体都可以根据元素的HTML结构和当前UI状态从元素中提取不同的值。

小提琴:http://jsfiddle.net/h6csLaun/2/

答案 4 :(得分:0)

var studentflag = $("#IsStudent").val();//This is a string .. not a boolean
if (studentflag === "true")  //therefore this has to be string comparison

或者您可以按如下方式设置studentflag布尔值:

var studentflag = $("#IsStudent").val() === "true";
if (studentflag) { ....