Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/05/2009, 17:26
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: error variable global al obtener el numero mayor

el problema es que la segunda vez se esta comparando dos string en lugar de al menos uno de ellos integer. o sea, javascript utiliza un algoritmo diferente (operator overload o coercion) segun el tipo de valor de cada argumento. en la primera ocasion se compara un numero y un string. en este caso el string se converte a numero y luego se realiza la comparacion. cuando la evaluacion resulta true, la variable global contiene el string.

sin embargo, para la segunda ocacion, y subsecuentes, se comparan dos string donde javascript utiliza el primer character de cada operando y los compara segun el charCode. de modo que en las cadenas '90' y '180', el 9 es mayor que el 1.

para solucionarlo, debes convertir al menos un operando a tipo integer antes de hacer la comparacion. o la version mucho mas corta, utiliza la funcion Math.max.

Código javascript:
Ver original
  1. var maximoInsumoDespachoPaciente = 0;
  2. function agregarInsumoDespachoPaciente(){
  3. maximoInsumoDespachoPaciente = Math.max(document.getElementById('txt_str_total_recetado').value,
  4. maximoInsumoDespachoPaciente);
  5. }

en esta version no tienes que preocuparte por el tipo de valor, pues Math.max convierte cada argumento a tipo numerico y devuelve como integer el argumento con valor mas alto.