2012-02-01 66 views
6

我的html代码是这样的:问题在JavaScript中比较两个数字

<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> 

当我使用低比较这两个值是12,高为112不工作。 像22和122,33和133等....

我使用的IE浏览器版本8.请帮助。

回答

13

尝试这样的: -

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

或浮点数你可以使用

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

或者干脆就是你SE

Number() 
+0

如果数恰好是八进制格式,它不会工作:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt – Sarfraz 2012-02-01 10:54:41

+0

是的,你是对的,然后在这种情况下:使用基值或简单地使用数字( ) – Pranav 2012-02-01 11:11:54

+0

IDK的什么原因,但数()我没有工作,但其他东西的作品 – menaka 2016-11-04 07:20:29

6

使用parseInt与基地得到正确的结果:

var l = parseInt(document.test.low.value, 10); 
var h = parseInt(document.test.high.value, 10); 
+0

不知道'parseInt'是比较好的,例如'10a'将被转换为'10',即使它不是一个真正的号码 - 使用unary plus会使它成为更适合IMO的'NaN'值。 – 2012-02-01 10:37:03

+0

@ShadowWizard:在这种情况下,'+'可以为前缀,然后'parseInt'但是使用'+'本身并不能避免的八进制数的问题AFAIK。 – Sarfraz 2012-02-01 10:39:07

0

当你在一个if语句比较两个字符串:

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

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

0

您的脚本放置在错误的地方。工作了这一点

http://jsbin.com/okexuj

<html> 
    <body> 
     <form name="test"> 
      <input type="text" size="11" id="low" value="1" /> 
      <input type="text" size="11" id="high" value="10" /> 
      <input type="button" value="sss" onclick="pepe(); " /> 
     </form> 

     <script type="text/javascript"> 
      function pepe() { 
       var l = document.test.low.value; 
       var h = document.test.high.value; 
       //alert("hi " + h + " lo " + l); 
       if (l > h) { 
       alert("low greater than high low is -"+l+", high is -"+h); 
       } else { 
       alert("ok, i'll allow it"); 
       } 
      } 
     </script> 
    </body> 
</html> 
后,您的代码工作
2
var lnum = new Number(l); 
var hnmu = new Number(h); 
if(lnum > hnum){ 
alert('if'); 

}else{ 
alert('else'); 
} 
+0

这段代码为我工作。 – Lokesh 2013-12-04 05:51:37