在javascript中比较两个数字的问题

IT技术 javascript html
2021-02-26 13:20:11

我的 html 代码是这样的:

<html>
<SCRIPT type="text/javascript" language="JavaScript">   
function fun()
{
var l = document.test.low.value;
var h = document.test.high.value;
alert(l);
alert(h);
    if(l >h){
        alert("low greater than high low is -"+l+"high is -"+h);
    }
}
</SCRIPT>

<body>

<form name="test">
<input type="text" size="11" id="low" />
<input type="text" size="11" id="high" />
<input type="button" value="sss" onClick="fun()"/> 
</form>
</body>
</html>

当我使用low is 12和high is 112比较这两个值时,它不起作用。像 22 和 122、33 和 133 等等......

我使用的是 IE 浏览器版本 8。请帮忙。

5个回答

像这样尝试:

if (parseInt(l,10) > parseInt(h,10))

或者对于浮点数,您可以使用

if (parseFloat(l,10) > parseFloat(h,10))

或者干脆使用

Number()
如果数字恰好是八进制格式,它将不起作用:developer.mozilla.org/en/JavaScript/Reference/Global_Objects/...
2021-04-20 13:20:11
不知道是什么原因,但 Number() 对我不起作用,但其他东西有效
2021-05-07 13:20:11
是的,在那种情况下你是对的:使用基值或简单地使用 Number()
2021-05-08 13:20:11

您需要将它们转换为数字:

if(+l > +h){

一元加号运算符将字符串值转换为数值。有关更多详细信息,请参阅此问题:
一元加减运算符的重要用途是什么?

活生生的例子

与 base一起使用以获得正确的结果:parseInt

var l = parseInt(document.test.low.value, 10);
var h = parseInt(document.test.high.value, 10);
不确定parseInt在这里是否好,例如10a10即使它不是真正的数字也会被转换为- 使用一元加号将使其NaN值更适合 IMO。
2021-05-18 13:20:11
@ShadowWizard:在那种情况下+可以加上前缀,然后单独parseInt使用+不会避免八进制数问题AFAIK。
2021-05-20 13:20:11
var lnum = new Number(l);
var hnmu = new Number(h);
if(lnum > hnum){
alert('if');

}else{
alert('else');
}

在 if 语句中比较两个字符串时:

if ( l > h) {}    
when l = "12" and h = "112"

它将这两个值作为字符串进行比较"3" > "1"它说l > h真的