通过js获取页面两个数字输入框的值,并对其进行大小比较。此时出来的结果可能让你迷惑不解,例如代码:
代码如下var v1 = $("#input1").val();
var v2 = $("#input2").val();
alert(v1 > v2);
假如input1中输入10,input2中输入2。10肯定是大于2的,所以上面的alert框应该弹出true,但实际上给出的是false。原因何在?对应数字10大于2是毫无疑问的,如果是作为字符串比较,那么结果刚好相反。而上述从页面获取值得到的类型是String。
例
<script>
alert( "120" > "40"); //false, 因为 1<4
alert( 120 > 40.00); //true
</script>
在js脚本中, 有时候需要比较两个值的大小, 并且这两个值都是数字,
如
function getBigger(a, b){
return a > b? a:b;
}
如果明确是要进行数字比较,则需要显示的转化为数字,例如使用parseInt、parseFloat;还有一种方法是使用减法运算符,如:v1 – v2 > 0,此时js在运算前内部会进行类型转换。
例
代码如下
<script language="javascript">
function compare()...{
if(parseInt(document.form1.a.value) < parseInt(document.form1.b.value))...{
alert("a }else...{
alert("a>b");
}
}
</script>
parseInt ( cString )从字符串cString非空字符开始转换得到的整数,遇到小数点或其他0-9外的字符就停止,如“-1234a”,“-1234.0”都将返回-1234;如果除第一个符号外一个0-9字符都不是,将返回NaN,如“-a”、“abc”等;
另外由于加法运算符同时支持数字和字符串,使用这个时候也要小心。例如 a + b ,如果其中一个是字符串类型,一个是数字类型,在执行运算前会把另外一个转化为字符串类型,所以实际是进行字符串链接操作,而不是想要的算术运算。在确定是要做算术运算的情况下,对于未知类型的参数,保险的情况下还是使用parseInt进行类型转换。
javascript学习指南|Javascript数字大小比较时警惕对象类型
http://m.bbyears.com/wangyezhizuo/39358.html
推荐访问: