javascript if语句检查真/假
我在JS中写了一个直截了当的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
function printLetter(LetterId) {
var studentflag = $("#IsStudent").val();
if (studentflag)
{
//do option 1
} else {
//do option 2
}
}
每次运行时,
studentflag
var值都是正确的,但无论是true
还是false
,它都会进入选项1。我很确定我以前在JS中做过类似的true
/false
检查,但是我需要把它拼出来吗?这就是所谓的truthy和falsy值
以下值总是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
}