Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript if语句检查真/假_Javascript_Jquery - Fatal编程技术网

javascript if语句检查真/假

javascript if语句检查真/假,javascript,jquery,Javascript,Jquery,我在JS中写了一个直截了当的if语句,但它运行不正确 function printLetter(LetterId) { var studentflag = $("#IsStudent").val(); if (studentflag) { //do option 1 } else { //do option 2 } } 每次运行时,studentflagvar值都是正确的,但无论是t

我在JS中写了一个直截了当的if语句,但它运行不正确

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

           //do option 2    
    }

}

每次运行时,
studentflag
var值都是正确的,但无论是
true
还是
false
,它都会进入选项1。我很确定我以前在JS中做过类似的
true
/
false
检查,但是我需要把它拼出来吗?

这就是所谓的truthyfalsy

以下值总是falsy

  • 假的
  • 0(零)
  • “”(空字符串)
  • 空的
  • 未定义
  • NaN(表示非数字的特殊数字值!)
所有其他值均为真实值:

  • 包括
    “0”
    (引号中为零)
  • “false”
    (引号中的false)类似于
    if(studentflag)//being studentflag“false”
  • 空函数
  • 空数组,以及
  • 空对象
或者您可以将
studentflag
设置为布尔值,如下所示:

var studentflag = $("#IsStudent").val() === "true";
if (studentflag) { ....
.val()
不返回布尔值

试试这个

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

           //do option 2    
    }

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

如果
#StudentFlag
的“true”
的“false”
,那么
If(StudentFlag)
将始终遵循
true
路径,因为两者都是非空字符串(truthy)。您需要按照以下思路做一些事情:

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

海事组织在这个问题上应该有更多的背景。如果提交的解决方案适用于OP,这很好,但对于其他将其用作资源的人来说,接受的解决方案可能并不适用于所有情况

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


Fiddle:

如果不知道
#IsStudent
指的是什么,很难判断。乍一看,您的代码看起来不错,您是否尝试过在if语句之前使用console.log-on-studentFlag?结果是什么?@cdhowie不是因为
val()
返回的不是布尔值?@Alek
.val()
将始终返回字符串,只是有时可能是空字符串。空字符串为false,将遵循问题中列出的逻辑。我喜欢这个答案。
#IsStudent
值必须为“true”或“false”。
function printLetter(LetterId) {
    var studentflag = ($("#IsStudent").val () == 'true')
    if (studentflag)
    {
           //do option 1        
    } else {

           //do option 2    
    }

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