Foros del Web » Programando para Internet » Javascript »

Sumar valores de campos

Estas en el tema de Sumar valores de campos en el foro de Javascript en Foros del Web. Tengo un script muy majo que me sirve para sumar valores de campos. El problema que me da es que el script no se da ...
  #1 (permalink)  
Antiguo 25/06/2003, 09:34
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Sumar valores de campos

Tengo un script muy majo que me sirve para sumar valores de campos. El problema que me da es que el script no se da cuenta que son números y, en lugar de sumarlos, me los concatena

El código es este:

Código:
for (i=0;i<llista;i++) {
  document.ordenam.total_disseny.value += document.getElementsByName('disseny')[i].value;
}
Como veis, no es el típico de sumar valores usando document.form.field.value, sino que uso un getElementsByName porque los campos a sumar se llaman siempre igual

¿Alguien sabe como arreglar el script para que realmente sume los valores, en lugar de concatenarlos?
__________________
M a l d i t o F r i k i

Última edición por Cain; 25/06/2003 a las 09:37
  #2 (permalink)  
Antiguo 25/06/2003, 10:02
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola Cain:

Conociéndote, me imagino que ya habrás probado lo que te voy a decir... ... pero hay va:

for (i=0;i<llista;i++) {
document.ordenam.total_disseny.value += parseInt(document.getElementsByName('disseny')[i].value);
}

Usar parseInt o parseFloat si son reales.

Saludos
  #3 (permalink)  
Antiguo 25/06/2003, 10:12
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Pues no lo había probado, pero tampoco me resuelve ese problema (sin embargo me resuelve otro) Gracias caricatos
__________________
M a l d i t o F r i k i
  #4 (permalink)  
Antiguo 25/06/2003, 10:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
... de nada... Al menos te ha servido en parte...

Ahora me has dejado intrigado

Voy a probar en casa, y si sale algo te aviso...
¿Son enteros los números?

Saludos
  #5 (permalink)  
Antiguo 25/06/2003, 11:12
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Si, son todo números enteros.

El script completo es así:

Código:
function calcula() {
	document.ordenam.total_disseny.value = 0; document.ordenam.total_web.value = 0; document.ordenam.total_programacio.value = 0;
	llista=document.getElementsByName('disseny').length;
	for (i=0;i<llista;i++) {
		a = parseInt(document.getElementsByName('disseny')[i].value);
		b = parseInt(document.getElementsByName('web')[i].value);
		c = parseInt(document.getElementsByName('programacio')[i].value);
		document.ordenam.total_disseny.value += a;
		document.ordenam.total_web.value += b;
		document.ordenam.total_programacio.value += c;
		document.getElementsByName('total')[i].value = a + b + c;
	}
	document.ordenam.total2.value = document.ordenam.total_disseny.value + document.ordenam.total_web.value + document.ordenam.total_programacio.value;
}
Ahora, con el parseInt(), me funciona la suma a+b+c, pero no me funcionan las de antes
__________________
M a l d i t o F r i k i
  #6 (permalink)  
Antiguo 25/06/2003, 11:14
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Recuerdo que alguna vez use getElementsByName, y me daba problemas... no sé si será tu caso, pero probé con otra cosa y salió mejor...

Te voy a poner el código para que lo veas:

Esta es la función:

function sumar() {
var total = 0;
datos = document.forms.ordenam.getElementsByTagName('input ');
for (var i = 0; i < datos.length; i ++)
if (datos[i].name == "disseny")
total += parseInt(datos[i].value);
document.forms.ordenam.total_disseny.value = total.toString();
}

Y este el formulario de prueba:

<form name="ordenam" action="javascript:sumar()">
<input type=text name="disseny" value="">
<input type=text name="disseny" value="">
<input type=text name="total_disseny" value="">
<input type=submit>
</form>

Espero que te sirva.

Saludos
  #7 (permalink)  
Antiguo 25/06/2003, 11:22
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Lo probaré, gracias
__________________
M a l d i t o F r i k i
  #8 (permalink)  
Antiguo 25/06/2003, 11:26
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
...

Tal vez en vez de usar:

document.ordenam.total_disseny.value += a;

sea mejor algo así:

document.ordenam.total_disseny.value = parseInt(document.ordenam.total_disseny.value) + a;

y lo mismo con las demás sumas.

Saludos
  #9 (permalink)  
Antiguo 25/06/2003, 11:33
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Pues tal vez sea buena idea. Ahora lo pruebo y te cuento.

Gracias de nuevo
__________________
M a l d i t o F r i k i
  #10 (permalink)  
Antiguo 25/06/2003, 11:36
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Perfecto!!!!

Eres un genio
__________________
M a l d i t o F r i k i
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 14:55.