为什么js会自动把表单里的字符串0当作是数字0

MiSenIn 2011-09-27 10:13:46

<script language="JavaScript">
<!--
function chk()
{
if (tmpform.country.value==0)
{
alert("请选择");
return false;
}

return true;
}
//-->
</script>
<form name="tmpform" method=post action="b.asp" onsubmit="javascript:return chk();">
<select name="country">
<option value="0">请选择</option>
<option value="美国">美国</option>
<option value="日本">日本</option>
<option value="中国">中国</option>
</select>
    
<input type="submit" name="asdasd" value="提交">


</form>




请注意我表单里,设置的value="0" 是字符串


而我检测函数里的 用法是 if (tmpform.country.value==0)

用数字也是对的

用字符串 if (tmpform.country.value=="0")也是对的


为什么那么奇怪啊
...全文
232 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
诺维斯基 2011-09-27
  • 打赏
  • 举报
回复
学习了。
lz也学习了吧。
ayong120 2011-09-27
  • 打赏
  • 举报
回复
其实这就是"=="和"==="的区别了,用"=="一般会默认进行类型的转换,属于值的比较;而"==="则是要进行值和类型的比较,'0'是一个string类型,而0是一个number类型,所以用"=="和"==="就会有区别了。
豆虫 2011-09-27
  • 打赏
  • 举报
回复
要想0不等于"0" 就要用全等于 === 类型和值都要相等 才为true
== 这个只要值相等就行 这也是js弱类型的特点
寒似火 2011-09-27
  • 打赏
  • 举报
回复
楼上回答的都很正确
javascript_2011 2011-09-27
  • 打赏
  • 举报
回复
js是弱类型,所以比啊
bennman 2011-09-27
  • 打赏
  • 举报
回复
你要理解 == 的意思
==, 两边值类型不同的时候,要先进行类型转换,再比较。

如果你用 === 的话 就只有 if (tmpform.country.value==="0") 才成立了 应为value值是string类型
001007009 2011-09-27
  • 打赏
  • 举报
回复
是这样的,js是弱类型语言

0 == '0' 正确

但是 0 === '0' 错误。

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧