2012-02-01 12 views
6

mi código html es como:problema con la comparación de dos números en 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> 

cuando comparo estos dos valores utilizando baja es de 12 y la alta es de 112 no está funcionando. como 22 y 122, 33 y 133 etc ....

Estoy usando el navegador IE versión 8. por favor ayuda.

Respuesta

13

tratan de esta manera: -

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

o para números de coma flotante se puede utilizar

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

o simplemente tú SE

Number() 
+0

No funcionará si el número es formato octal: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt – Sarfraz

+0

sí, entonces está en ese caso: use el valor base o simplemente use Number () – Pranav

+0

idk cuál es la razón, pero el número() no funcionó para mí, pero otras cosas funciona – menaka

6

Uso parseIntcon la base para obtener resultados correctos:

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

'No estoy seguro parseInt' es bueno aquí, por ejemplo' 10a' se convertirá en '10' a pesar de que en realidad no es un número - el uso de unario plus lo convertirá en el valor 'NaN' que es más apropiado para IMO. –

+0

@ShadowWizard: En ese caso, '+' puede tener el prefijo y luego 'parseInt' pero usar' + 'solo no evitará el problema del número octal AFAIK. – Sarfraz

0

Cuando se comparan dos cadenas en una sentencia if:

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

Se comparan estos dos valores como cadenas como "3" > "1". Dice l > h es verdadero

0

Su secuencia de comandos está en el lugar equivocado. Su código funciona después de trabajar que fuera

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

Este pedazo de código funciona para mí. – Lokesh

Cuestiones relacionadas