input值的比较——string转化为number类型的方法

之前工作中遇到两个数字输入框的值比较大小,出现了3>10的错误情况,例子如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>input值的比较</title>
    <script src="http://apps.bdimg.com/libs/jquery/1.11.3/jquery.js"></script>
</head>
<body>
<input type="number" name="numberOne" id="numberOne">
<br /><br />
<input type="number" name="numberTwo" id="numberTwo">
<br /><br />
<button id="btn">比较input值</button>
<p>result:<span id="result"></span></p>
<script>
$("#btn").on("click",function(){
    var numberOneValue = $("#numberOne").val();
    var numberTwoValue = $("#numberTwo").val();
    if(numberOneValue == numberTwoValue){
        $("#result").html("两者相等");
    }
    if(numberOneValue > numberTwoValue){
        $("#result").html("前者大于后者");
    }
    if(numberOneValue < numberTwoValue){
        $("#result").html("后者大于前者");
    }
});
</script>
</body>
</html>

之后将获得input的值转换为number,就正确了,如下:
方案1:

var numberOneValue = $("#numberOne").val() * 1;
var numberTwoValue = $("#numberTwo").val() * 1;

方案2:

var numberOneValue = parseInt($("#numberOne").val());
var numberTwoValue = parseInt($("#numberTwo").val());

方案3:

var numberOneValue = parseFloat($("#numberOne").val());
var numberTwoValue = parseFloat($("#numberTwo").val());

方案4:

var numberOneValue = Number($("#numberOne").val());
var numberTwoValue = Number($("#numberTwo").val());

既然将input值转换为number类型就对了,那就是类型的问题了,然后将input值得类型输出:

console.log(typeof numberOneValue);
console.log(typeof numberTwoValue);

得到如下输出:
这里写图片描述

可以得到input值的类型是string(即使上面已经设置type="number"),所以input值的比较是以string来进行比较的。

之后又将两个input未转为number类型的值的ASCII值输出,

console.log(numberOneValue.charCodeAt());
console.log(numberTwoValue.charCodeAt());

结果如下:
这里写图片描述

查阅ASCII表,
这里写图片描述
可知3的ASCII码值为51, 1的ASCII码值为49,明显51>49,由此得出input的type=”number”的值如果未转为number类型,则是以其首位数字的ASCII码值进行比较,所以如果仅仅是0~9直接的数字进行比较的时候,转不转换为number类型不影响结果,但若是多位数字进行比较的时候就必须将值转化为number类型进行比较。

并且上面的几种方案也是将string类型转化为number类型常用的几种方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值