2012-02-01 38 views
6

mã html của tôi là như sau:vấn đề với so sánh hai con số trong 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> 

khi tôi so sánh hai giá trị này sử dụng thấp là 12 và cao là 112 không được làm việc. như 22 và 122, 33 và 133 v.v.

Tôi đang sử dụng trình duyệt IE phiên bản 8. hãy trợ giúp.

Trả lời

13

thử như thế này: -

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

hoặc cho số nổi bạn có thể sử dụng

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

hoặc đơn giản là bạn se

Number() 
+0

Nó sẽ không hoạt động nếu số xảy ra là định dạng bát phân: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt – Sarfraz

+0

có bạn đúng trong trường hợp đó: sử dụng giá trị cơ sở hoặc chỉ cần sử dụng Số () – Pranav

+0

idk lý do là gì nhưng Số() đã không làm việc cho tôi, nhưng các công cụ khác hoạt động – menaka

6

Sử dụng parseIntvới cơ sở để có được kết quả chính xác:

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

Không chắc 'parseInt' là tốt ở đây, ví dụ' 10a' sẽ được chuyển đổi cho '10' mặc dù nó không thực sự là một số - sử dụng cộng đơn sẽ làm cho giá trị 'NaN' là IMO phù hợp hơn. –

+0

@ShadowWizard: Trong trường hợp đó, '+' có thể được đặt trước và sau đó là 'parseInt' nhưng sử dụng' + 'một mình sẽ không tránh được vấn đề số bát phân AFAIK. – Sarfraz

0

Khi bạn so sánh hai chuỗi trong một câu lệnh if:

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

Nó so sánh hai giá trị như dây đàn như "3" > "1". Nó nói l > hđúng

0

Tập lệnh của bạn được đặt sai vị trí. mã của bạn hoạt động sau khi làm việc đó ra

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

Đoạn mã này làm việc cho tôi. – Lokesh