我在表单中将一个 bool 值设置为隐藏变量,并且我有以下 javascript。
$().ready(function() {
var flag = $('#popUpFlag').val();
alert("flag = "+flag);
if(flag){
alert("flag is true");
}else{
alert("flag is false");
}
})
这些是警报的输出。
flag =
flag is false
flag = false
flag is false
flag = true
flag is false
我关心的显然是第三个输出。当标志为 true 时,为什么打印“flag is false”而不是“flag is true”。我在IE8和FF 4中测试过
欢迎提出建议。
最佳答案
不,您在隐藏字段中没有 bool 值。该字段中的值始终是一个字符串。
当您将字符串值当作 bool 值使用时,您会得到意想不到的结果。如果值为 false
、0
、""
或 null
,则条件为 false,但字符串 "false"
两者都不是,因此它被评估为 true
。
如果你想要一个 bool 值,你必须解析字符串。一种简单的方法是简单地检查字符串是否具有特定值:
var flag = $('#popUpFlag').val() === 'true';
关于javascript : checking boolean values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5800688/