<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>
&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="asdasd" value="提交">
</form>
请注意我表单里,设置的value="0"  是字符串
而我检测函数里的 用法是 if (tmpform.country.value==0)
 
用数字也是对的用字符串  if (tmpform.country.value=="0")也是对的
为什么那么奇怪啊

解决方案 »

  1.   

    你要理解 == 的意思
    ==, 两边值类型不同的时候,要先进行类型转换,再比较。如果你用 === 的话 就只有 if (tmpform.country.value==="0") 才成立了 应为value值是string类型
      

  2.   

    要想0不等于"0" 就要用全等于 === 类型和值都要相等 才为true 
    == 这个只要值相等就行 这也是js弱类型的特点
      

  3.   

    其实这就是"=="和"==="的区别了,用"=="一般会默认进行类型的转换,属于值的比较;而"==="则是要进行值和类型的比较,'0'是一个string类型,而0是一个number类型,所以用"=="和"==="就会有区别了。