Foros del Web » Programando para Internet » Javascript »

Tres funciones en una

Estas en el tema de Tres funciones en una en el foro de Javascript en Foros del Web. Tengo un script con tres funciones, cada una con dos variables y sus distintos condicionantes. Una de las variables toma el valor de tres input ...
  #1 (permalink)  
Antiguo 17/07/2011, 06:39
Avatar de ThunderWolf  
Fecha de Ingreso: julio-2011
Mensajes: 30
Antigüedad: 12 años, 9 meses
Puntos: 1
Tres funciones en una

Tengo un script con tres funciones, cada una con dos variables y sus distintos condicionantes. Una de las variables toma el valor de tres input text diferentes equivalentes a cada función (var valor), y la otra es exactamente igual en cada caso (var nivel). Después, en el formulario, hay tres botones que llaman a sus respectivas funciones, generando un odioso alert que sustituiré por un div o un textarea, pero eso es otro tema.

Aqui esta la página con el código al completo:
http://bit.ly/calcula_tu_rango_beta

Si fuera posible, me gustaría tener un boceto que ilustre como aunar las tres funciones en una, es decir; que al introducir los datos en los tres input text y pulsando un solo botón, se evalúen al mismo tiempo todos los condicionantes. Solo importa el resultado mayor de los tres input text, es decir, que si los otros dos valores introducidos dieran un resultado menor, se desestimarían.

Esto es lo que he intentado. Obviamente no funciona, e inutiliza todo el script (no os riáis, soy demasiado novato en javascript):

Código:
function comprobartodo()

{				

var valor1 = document.getElementById("csaves").value;
var valor2 = document.getElementById("hsaves").value;
var valor3 = document.getElementById("cfirst").value;

var nivel = [ "Peón", "Cocinero", "Soldado", "Tesorero", "Reclutador", "Cazador", "Iniciado", "Aprendiz de Chamán", "Chamán de la Tribu" ];

{

if ( valor1 <= 1000 )
	nivel = "Peón";

{

alert("Los datos introducidos equivalen al rango " + nivel );

}
		
if ( valor2 < 200 )
	nivel = "Peón";

{

alert("Los datos introducidos equivalen al rango " + nivel );

}

if ( valor3 < 75 )
	nivel = "Peón";

{

alert("Los datos introducidos equivalen al rango " + nivel );

}
}
  #2 (permalink)  
Antiguo 17/07/2011, 09:42
 
Fecha de Ingreso: mayo-2011
Mensajes: 171
Antigüedad: 12 años, 11 meses
Puntos: 32
Respuesta: Tres funciones en una

asi de simple si hacer muchos cambios pero juntando las tres funciones en una tienes esto:
Código HTML:
Ver original
  1. <title>Ejemplo</title>
  2. <script type="text/JavaScript">
  3.     function entero(a,e){
  4.         a=navigator.appName=="Netscape"?a.which:a.keyCode;e.style.border='3px solid #f00';return a<48||a>57?(alert("\u00a1Solo numeros por favor!"),!1):!0};
  5.     function comprobar(){
  6.         var nivU=nivD=nivT='';
  7.         var valor=document.getElementById("ratones");                  
  8.         var csAves=valor.csaves.value;
  9.         var csAvesh=valor.csavesh.value;
  10.         var csFirst=valor.cfirst.value;    
  11.        
  12.         if(csAves< 1300){nivU="Peón";}
  13.         if(csAves>=1300){nivU="Cocinero";}
  14.         if(csAves>=1700){nivU="Soldado";}
  15.         if(csAves>=2200){nivU="Tesorero";}
  16.         if(csAves>=2800){nivU="Reclutador";}
  17.         if(csAves>=3500){nivU="Cazador";}
  18.         if(csAves>=4300){nivU="Iniciado";}
  19.         if(csAves>=5200){nivU="Aprendiz de Chamán";}
  20.         if(csAves>=10000){nivU="Chamán de la Tribu";}
  21.        
  22.         if(csAvesh< 200){nivD="Peón";}
  23.         if(csAvesh>=200){nivD="Cocinero";}
  24.         if(csAvesh>=500){nivD="Soldado";}
  25.         if(csAvesh>=900){nivD="Tesorero";}
  26.         if(csAvesh>=1400){nivD="Reclutador";}
  27.         if(csAvesh>=2000){nivD="Cazador";}
  28.         if(csAvesh>=2700){nivD="Iniciado";}
  29.         if(csAvesh>=3500){nivD="Aprendiz de Chamán";}
  30.         if(csAvesh>=8000){nivD="Chamán de la Tribu";}
  31.        
  32.         if(csFirst< 75){nivT="Peón";}
  33.         if(csFirst>=75){nivT="Cocinero";}
  34.         if(csFirst>=100){nivT="Soldado";}
  35.         if(csFirst>=150){nivT="Tesorero";}
  36.         if(csFirst>=225){nivT="Reclutador";}
  37.         if(csFirst>=325){nivT="Cazador";}
  38.         if(csFirst>=450){nivT="Iniciado";}
  39.         if(csFirst>=600){nivT="Aprendiz de Chamán";}
  40.         if(csFirst>=1000){nivT="Chamán de la Tribu";}
  41.            
  42.         document.getElementById('resultados').innerHTML =
  43.               "El número de ratones salvados en modo normal que has introducido, equivalen al rango -> "+nivU+
  44.               "<br> El número de ratones salvados en modo dificil que has introducido, equivalen al rango -> "+nivD+
  45.               "<br> El número introducido de veces que has llegado el primero, equivalen al rango -> " + nivT;
  46.     }
  47.  
  48.     </head>
  49.  
  50.  
  51. <form id="ratones" name="form1" method="post" action="#" >
  52.     UNO
  53.     <input type="text" id="csaves" name="csaves" onKeyPress='return entero(event,this)' />
  54.     <hr>
  55.     DOS
  56.     <input type="text" id="csavesh" name="csavesh" onKeyPress='return entero(event,this)' />
  57.     <hr>
  58.     TRES
  59.     <input type="text" id="cfirst" name="cfirst" onKeyPress='return entero(event,this)' />
  60.     <hr>
  61.     <input type="button" id="btnComprobar" name="btnComprobar" value="Calcular ratones salvados" onclick="comprobar();" />
  62. </form>
  63. <div id="resultados"></div>
  64. </body>
  #3 (permalink)  
Antiguo 17/07/2011, 11:10
Avatar de ThunderWolf  
Fecha de Ingreso: julio-2011
Mensajes: 30
Antigüedad: 12 años, 9 meses
Puntos: 1
De acuerdo Respuesta: Tres funciones en una

¡Muchísimas gracias!

Has transformado un código anodino en una obra maestra, estoy en deuda contigo.

Etiquetas: funcion, input, tres, variables, formulario, txt
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 05:40.