You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS判断输入数字大小代码异常:不同位数数字对比结果错误如何修复?

问题原因

从input元素的value属性获取到的值永远是字符串类型,哪怕你给input设置了type="number"也不例外。你代码里直接用>比较两个字符串,会按字符的Unicode编码逐位对比:

  • 对比"2"和"55"时,首先比对第一位字符"2"和"5"的Unicode值,"2"的编码大于"5",所以判断"2">"55"为真,返回了错误结果。
  • 位数相同的时候比如"2"和"3",逐位对比的结果刚好和数字大小逻辑一致,所以你会觉得这部分场景结果正确。
修复方案

在比较前先把两个值转换为数字类型即可,可使用Number()构造函数完成转换,同时兼容整数、小数的判断场景。
修复后的JS代码如下:

function biggerOne() {
    // 转换为数字类型后再进行比较
    var x = Number(document.getElementById("firstNumber").value);
    var y = Number(document.getElementById("secondNumber").value);
    if (x > y) {     
        document.getElementById("Result").innerHTML = x;
    } else {
        document.getElementById("Result").innerHTML = y;
    }
}

另外你的HTML代码里还有两处可优化的点:

  • 第一个input标签末尾有多余的乱码字符ر,建议删除
  • <p>标签本身没有原生的value属性,你写的value=""属于无效属性,可以直接移除

内容的提问来源于stack exchange,提问作者JafarMrt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:57:02