我有一个布尔值设置为表单中的隐藏变量,我有以下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
我的关注显然是第三项产出。当标志为真时,为什么打印“flag is false”,而不是“flag is true”。我在IE8和FF 4中进行了测试
欢迎提出建议。
答案 0 :(得分:16)
不,您在隐藏字段中没有布尔值。字段中的值始终为字符串。
当您使用字符串值时,就好像它是一个布尔值,您会得到意外的结果。如果值为false
,0
,""
或null
,则条件为false,但字符串"false"
不是,因此评估为{{1 }}
如果你想要一个布尔值,你必须解析字符串。一种简单的方法是简单地检查字符串是否具有特定值:
true
答案 1 :(得分:6)
flag
是一个字符串,所以请改为:
if (flag === "true") {
//true
}
else if (flag === "false") {
//false
}
答案 2 :(得分:0)
嗯......我怀疑你使用的值是一个字符串,所以你在警报中正确看到了值,但是当它试图像布尔值一样看它时。
How can I convert a string to boolean in JavaScript?
尝试转换为布尔值并查看它是否仍然提供相同的问题