我写道,我认为,这是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
来代替?
答案 0 :(得分:6)
这被称为 truthy 和 falsy 值
以下值始终为 falsy :
所有其他值真实:
"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状态从元素中提取不同的值。
答案 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) { ....