Foros del Web » Programando para Internet » Javascript »

Sumar todos los elementos de un formulario por medio de un ciclo.

Estas en el tema de Sumar todos los elementos de un formulario por medio de un ciclo. en el foro de Javascript en Foros del Web. Bueno pues como puedo sumar todos los elementos de un formulario por medio de un ciclo, son cajas de texto. Se que podría sumarlos accesando ...
  #1 (permalink)  
Antiguo 29/11/2002, 01:11
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 4 meses
Puntos: 1
Sumar todos los elementos de un formulario por medio de un ciclo.

Bueno pues como puedo sumar todos los elementos de un formulario por medio de un ciclo, son cajas de texto. Se que podría sumarlos accesando al valor de cada caja pero hay alguna forma de hacerlo mas automatizado?

Saludos
  #2 (permalink)  
Antiguo 29/11/2002, 08:19
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 2 meses
Puntos: 2
El codigo no me salio perfecto , pero espero que te sirva como partida o algo:



Código:
<html>
<head>
<title></title>
	<script language="JavaScript1.2">
		
		function sumar(){
			numeroCampos = 5;
			suma=0;
			
			for (i=0;i<numeroCampos;i++){
				valor = document.forms[0].elements[i].value;
				if (!(isNaN(valor)) && (valor != "")){					
					suma = suma + parseInt(valor);
				}
				
			}
			alert(suma);
		}
	
	</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">

<form name="formulario" method="post" action="">
	<input type="text" name="c1" value="3">
	<br>
	<input type="text" name="c2">
	<br>
	<input type="text" name="c3">
	<br>
	<input type="text" name="c4">
	<br>
	<input type="text" name="c5">
	<br>
	<input type="button" value="Sumar" onClick="javascript:sumar(this.form);">
</form>
</body>
</html>





ToKaTa.
  #3 (permalink)  
Antiguo 29/11/2002, 08:47
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Hola Urjose.

Para eso tienes al menos dos opciones diferentes, la primera direccionando todos los elementos del formulario, preguntando si son textbox y de ser asi, acumular. Esa opción necesariamente va a ser sensible al tipo y versión del navegador.

Por otro lado, si tienes la posibilidad de que los nombres de tus textboxes tengan nombres consecutivos, digamox txt01, txt02, txt17 y un campo tipo hidden para que coloques el máximo. Con esas precondiciones, el ciclo es sencillo, seguro y portable.

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">
   function 
sumar(){
    var 
nMax parseInt(document.frm.txtmax.value);
    var 
nVal;
    var 
nRes 0;
    for (var 
1<= nMaxi++){
     
nVal parseInt(eval("document.frm.txt" String(i) + ".value"));
     
nVal = (isNaN(nVal)? 0nVal);
     
nRes += nVal;
    }
    
document.frm.res.value String(nRes);
   }
  
</script>
 </head>
 <body>
  <form name="frm">
   Valor 1:<input type="text" name="txt1"><br>
   Valor 2:<input type="text" name="txt2"><br>
   Valor 3:<input type="text" name="txt3"><br>
   Valor 4:<input type="text" name="txt4"><br>
   Valor 5:<input type="text" name="txt5">&nbsp;&nbsp;&nbsp;&nbsp;
   <input type="hidden" name="txtmax" value="5">
   <input type="button" value="Calcular" onclick="sumar()">
   <hr>
   Resultado:<input type="text" name="res" readonly>
  </form>
 </body>
</html> 
Saludos.
  #4 (permalink)  
Antiguo 29/11/2002, 08:55
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Urjose, no me había percatado de la respuesta de ToKaTa, es esencialmente equivalente.

Saludos a ambos.
  #5 (permalink)  
Antiguo 29/11/2002, 12:56
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 4 meses
Puntos: 1
Gracias !!

Lo pruebo en la noche y les cuento, ahora estoy en el trabajo.

Gracias nuevamente
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 20:34.