Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/02/2009, 18:30
Avatar de programeitor
programeitor
 
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 20 años
Puntos: 9
Respuesta: ¿Como podría optimizar este script?

hola, en principio puedes poner todas las funciones en el mismo script.

He echo lo que pensabas que deberia ser, no andabas muy descaminado, solo habia que comprobar que hacia diferentes a las funciones, y realizar una sola pasandole esa diferencia y adecuando la funcion para captarla. Ademas he eliminado variables que no son nesesarias.

Código:
<script type="text/javascript">
function multiplica(form,n){
var k
switch(n)
{
case 1:{k=4.1;break}//kglu
case 2:{k=9.3;break}//klip
case 3:{k=4.2;break}//kptes
}
form["res"+n].value=parseFloat(form["num"+n].value)*k
}
 
function suma(form,n){
form[n+"4"].value=
parseFloat(form[n+"1"].value)+
parseFloat(form[n+"2"].value)+
parseFloat(form[n+"3"].value)
}
</script>

Aqui el form es el mismo, salvo que se llama a una funcion generica pasandole la diferencia señalada, que en el caso de la multiplicacion es el nº de campo (1,2 o 3), y en el de la suma el tipo de campo (num o res).

Código HTML:
<form>
<TABLE BORDER=1 CELLPADDING=8>
<TR>
<TD></TD>
<TD>Gramos consumidos</TD>
<TD>KCalorías consumidas</TD>
</TR> 
 
<tr>
<td>Hidratos de carbono</td>
<td><input name="num1" type="text" value="200" onBlur="multiplica(this.form,1)"/></td>
<td><input name="res1" type="text" value=""/></td>
</tr>
 
<tr>
<td>Lípidos</td>
<td><input name="num2" type="text" value="100" onBlur="multiplica(this.form,2)"/></td>
<TD><input name="res2" type="text" value=""/></TD>
</tr>
 
<tr>
<td>Proteínas</td>
<td><input name="num3" type="text" value="200" onBlur="multiplica(this.form,3)"/></td>
<td><input name="res3" type="text" value="" onBlur="suma(this.form,'num')"/></td>
</tr>
 
<tr>
<td>Total</td>
<td><input name="num4" type="text" value=""/></td>
<td><input name="res4" type="text" value="" onBlur="suma(this.form,'res')"/></td>
</tr>
 
</table>
</form> 
Saludos.

Última edición por programeitor; 07/02/2009 a las 18:53