Foros del Web » Programando para Internet » Javascript »

error variable global al obtener el numero mayor

Estas en el tema de error variable global al obtener el numero mayor en el foro de Javascript en Foros del Web. Hola: la idea es que al llamar esta funcion la variable global compare con el valor de la variable txt_str_total_recetadoy si esta ultima es mas ...
  #1 (permalink)  
Antiguo 12/05/2009, 13:32
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 18 años
Puntos: 1
error variable global al obtener el numero mayor

Hola:
la idea es que al llamar esta funcion la variable global compare con el valor de la variable txt_str_total_recetadoy si esta ultima es mas alto. quede ese valor

Este me funciona solo la primera vez.
ej:
Código PHP:
si lo agrego por primera vez aparece asi lo cual es correcto
variable global (maximoInsumoDespachoPaciente )
90 variable (txt_str_total_recetado)
90 valor asignado a la variable global

pero la segunda vez pasa lo siguiente
90 
ultimo valor agregado anteriormente variable global (maximoInsumoDespachoPaciente )
180nuevo valor de la variable (txt_str_total_recetado)
180180 es el resultado que deberia obtener
pero me sigue dando 90 
(valor asignado a la variable global)


var 
maximoInsumoDespachoPaciente 0;
function 
agregarInsumoDespachoPaciente(){
   var 
txt_str_total_recetado             document.getElementById('txt_str_total_recetado').value;
    if(
maximoInsumoDespachoPaciente txt_str_total_recetado){
     
maximoInsumoDespachoPaciente txt_str_total_recetado;
     
alert(maximoInsumoDespachoPaciente);
    }else{
         
alert(maximoInsumoDespachoPaciente);
    }

de antemano gracias
  #2 (permalink)  
Antiguo 12/05/2009, 17:26
Avatar de 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.
  #3 (permalink)  
Antiguo 13/05/2009, 09:52
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 18 años
Puntos: 1
Respuesta: error variable global al obtener el numero mayor

Cita:
Iniciado por zerokilled Ver Mensaje
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.
si exacto, ahora funko..gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:32.