if(var a)条件语句中,我发现赋值a=null ,a=0,a=""都可以
使得其判断结果为假;
但是最近在做一个js中,通过简单的a=document.getElementById().value获取text中输入的0和null时,
判断结果却是真。不知道为啥?
测试js文件如下:
<script type="text/javascript">
function checkIP(){//js表单验证方法
var text=document.getElementById("url").value;//通过id获取需要验证的表单元素的值
alert(text);
if(text){//当上面获取的值为空时
alert("1!");//弹出提示
return false;//返回false(不提交表单)
}
else
{alert("2!");
return true;}//提交表单
}
</script>
<FORM METHOD=POST ACTION="" name="ipform" onsubmit="return checkIP();">
<!--使用onsubmit方法进行表单验证-->
<input type="text" id="url" name="ip" size="15" maxlength="50" value="" />
<input type="submit" name="button" value="查询" /></FORM>
你获取的是"0"
和"null"
, 是字符串, 判断结果自然是真
if中除非你传入的boolean型,否则你需要比较一下,才能作为一个真正的boolean判断,笔者这个js应该这样写:
if(text == "undefined" || text == null || text == ""){
xxxxx
}
if的条件不为boolean的时候,会进行类型转换,a赋值为null、0、''、undefined等会被默认转为false。input输入的值为字符串,字符串“0”和“null”的长度不为0,所以会被转为true。