| |||
Media aritmética de un formulario. Tengo un formulario donde hay campos con texto y números, intento hacer la media aritmética de los campos numéricos de tal forma que si el valor del campos es “0” pase al siguiente y que no tenga en cuenta dicho campo. ¿Podríais ayudarme?. Muchas gracias |
| ||||
<head> <script> function suma(esto){ elementos=0; total=0; for(a=0;a<esto.elements.length;a++){ numero=parseFloat(esto[a].value); if(esto[a]>0){ elementos+=1; total+=numero; } } media=total/elementos; alert(media); } </script></head> <body> <form name="pepe" onsubmit="return suma(this)"> ... formulario... </form> </body> Dime si te sirve!
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| |||
Funciona perfectamente pero recorre todos los campos del formulario, mi intención es que sólo recorra ciertos campos que empiecen con el nombre por ejemplo: precio (precio1, precio2 etc…) pero no otros campos como: punit1, punit2 etc…., utilizando la función que me has enviado he añadido “precio'+a+'” intentando que sólo mire en los campos precio pero no me funciona, ¿tienes alguna idea para solucionarlo?. Adjunto te envío lo que estoy intentando hacer: function suma(esto){ n=5; elementos=0; total=0; for(a=0;a<5;a++){ numero=parseFloat(document.form.precio'+a+'.value) ; if(document.form.precio'+a+'.value>0){ elementos+=1; total+=numero; } } media=total/elementos; document.form.total.value = media; } </SCRIPT> </head> <body> <form action="medi2.asp" method="post" name="form" onSubmit="return suma(this)""> <p>NOMBRE <input name="nombre" type="text" id="nombre"> </p> <p> Precio1 <input name="precio1" type="text" id="precio1" size="4" maxlength="4"> Punit1 <input name="punit1" type="text" id="punit1" size="4" maxlength="4"> </p> <p> Precio2 <input name="precio2" type="text" id="precio2" size="4" maxlength="4"> Punit2 <input name="punit2" type="text" id="punit2" size="4" maxlength="4"> </p> <p> Precio3 <input name="precio3" type="text" id="precio3" size="4" maxlength="4"> Punit2 <input name="punit3" type="text" id="punit3" size="4" maxlength="4"> </p> <p> Precio4 <input name="precio4" type="text" id="precio4" size="4" maxlength="4"> Punit2 <input name="punit4" type="text" id="punit4" size="4" maxlength="4"> </p> <p> Precio medio <input name="total" type="text" id="total" size="6" maxlength="6"> </p> <p> <input type="submit" name="Submit" value="total"> </p> </form> ¡¡ muchísimas gracias ¡! |
| ||||
Prueba con esto: Código PHP:
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Por otra parte permiteme comentarte que la forma que tienes de manejar los formularios no es la correcta. En IE funcionará, pero me temo que en Firefox ocasionará alguna advertencia y en Mozilla probablemente no funcione. La forma correcta de manejar los formularios es la siguiente: document.forms['name_del_form'].elements['name_del_input'] Lo que tú pones así: document.form.precio debería ser: document.forms['form'].elements['precio']; Esto se puede comprimir quitando elements e incluso el forms poniendo: document['form']['precio']; Esto además te da mucha más libertad a la hora de llamar a los elementos de un formulario. La prueba está en el ejemplo que te he puesto antes. Por otra parte en la llamada a la funcion ponemos onSubmit="return suma(this)". El this sirve para englobar el elemento que llama a la función, en este caso es el formulario. Por lo que en vez de poner document.forms['form'] podemos poner el nombre que se le ha puesto al declarar la función: function suma(esto) en este caso "esto" suplanta al formulario. Por lo que se puede poner: esto['precio'] en vez de document.forms['form']['precio'] Espero que te haya ayudado mi explicación. Un saludo!
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| ||||
Me alegro de que te sirviera! Un saludo!
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |