Problemas con función parseInt en javascript

Buenas, tengo el siguiente problema:
Tengo tres cajas de texto llamadas input101, input102 e input103, ademas de un botón que llama a la función compararResultado, a la que se le pasan como parámetros los finales de los nombres de las cajas de texto, vamos 101, 102 y 103.
Lo que quiero es hacer una evaluación de números que introduciremos en las cajas de texto 101 y 102 y el número mayor me lo debería poner en la caja de texto 103 (en realidad no quiero el número, sino el nombre de la caja... Pero bueno es para mejor comprensión).
El problemas es que no consigo hacer que haga la comparación, ya que parece que no trabaja correctamente la función parseInt.
Te adjunto el código por si quieres echarle un vistazo.
He metido varias alertas para que se vea que el pase de los parámetros es correcto y que la función de eval también funciona correctamente:
<script language="JavaScript">
        function CompararResultado(param1, param2, param3){
          var objForm="document.formulario.input";
      alert(param1+", "+param2+" y "+param3);
      alert(eval(objForm+param1+'.value'));
      alert(eval(objForm+param2+'.value'));
      alert(eval(objForm+param3+'.value'));
      alert(parseInt(eval(objFrom+param1+'.value')));
            if(parseInt(eval(objForm+param1+'.value')) > parseInt(eval(objForm+param2+'.value'))){
               alert(eval(objForm+param1+'.name')+" mayor que "+eval(objForm+param2+'.name'));
         eval(objForm+param+'.value') = eval(objForm+param1+'.name');
            } else{
           if(parseInt(eval(objFrom+param1+'.value')) < parseInt(eval(objForm+param2+'.value'))){
               alert(eval(objForm+param2+'.name')+" mayor que "+eval(objForm+param1+'.name'));
         eval(objForm+param+'.value') = eval(objForm+param2+'.name');
              } else{
               alert(eval(objForm+param1+'.name')+" igual que "+eval(objForm+param2+'.name'));
                 eval(objForm+param3+'.value') = "Tienen que desempatar";
              }
            }
        }
    </script>
En la línea 10 he puesto una alerta para verificar que el problema está en el parseInt.
Gracias de antemano.

1 Respuesta

Respuesta
1
Aqui;:
var objForm="document.formulario.input";
Deberías de poner el nombre del campo, si no me equivoco, ¿no?, no solo input
La función está hecha para que la puedan llamar muchos input (alrededor de unos 60), no solo el 101, 102 y 103.
Según he leído por algunos foros, la función eval, transforma a "lenguaje" un string y el parseInt, pasa a tipo numérico, por lo tanto lo que pretendo mediante: parseInt(eval(objFrom+param1+'.value')); es pasar a numérico el dato que tiene el objeto document. Formulario.inputXXX. value
Si el parámetro param1 que recibe la función es 101, lo que quiero que haga es concatenar document. Formulario. input+101+. value para que al salir del eval, tenga el nombre del objeto. document. Formulario.input101. value y después haga el cambio a númerico del valor de dicho objeto.
Así metiéndole como parámetro a la función, el final (numero) de cada nombre de objeto, conseguiré hacer una función para todos los objetos que tengan esta nomenclatura: input+Numero
No se si estoy utilizando bien las funciones de eval y la de parseInt.
Con eval, efectivamente, puedes llamar a variables dinámicas, generadas por u contador, po por el numero de parámetros que tengas.
Quizás esto te aclare un poco:
http://www.desarrolloweb.com/faq/332.php
Este post que me has mostrado en en donde descubrí la función eval.
Creo que lo he entendido y que lo estoy aplicando correctamente, por ejemplo en la sentencia:
alert(eval(objForm+param1+'.value'));
devuelve el valor correctamente, y sin embargo pocas líneas después:
if(parseInt(eval(objForm+param1+'.value')) > parseInt(eval(objForm+param2+'.value'))){
No hace nada, por eso creo que el error está en la función parseInt.
¿Estoy utilizando el parseInt correctamente? Creo que la sentencia está bien formada, pero no realiza lo que debería hacer.
Gracias de nuevo.
Introduce el IF dentro del eval para que evalue la función dentro del proceso
Comentar que sigue igual, lo he intentado de varias formas y no lo consigo.
De todas maneras seguiré mirándolo y cuando tenga la solución la postearé.
Gracias por tu tiempo.
Ok, como quieras. Si es un error sintáctico, es fácil de averiguar, efectúa echos y comprobaciones para ello

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas