Foros del Web » Programando para Internet » Javascript »

Suma de valores en arrays

Estas en el tema de Suma de valores en arrays en el foro de Javascript en Foros del Web. Buenas anteriormente cree un tema y no me respondieron, espero correr con suerte en esta ocasion. Estoy realizando un sistema usuando PHP, JAVASCRIPT y AJAX, ...
  #1 (permalink)  
Antiguo 29/06/2011, 11:25
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 12 años, 11 meses
Puntos: 0
Suma de valores en arrays

Buenas anteriormente cree un tema y no me respondieron, espero correr con suerte en esta ocasion. Estoy realizando un sistema usuando PHP, JAVASCRIPT y AJAX, tengo un array de textbox en el cual quiero realizar la suma desus valores pero no encuentro como hacerlo!, heeeeeeeeellllpp meee les agradeceria mucho su ayuda. Aqui les coloco el codigo:


POBLACION DIRECTA</div></th>
<td colspan="3" class="Estilo2">&nbsp; </td>
</tr>
<tr>
<th class="label">INST:</th>
<td colspan="3" class="Estilo2"><div align="left">
<input name="poblacion[]" type="text" id="poblacion[]" size="6" />
</div></td>
</tr>
<tr>
<th class="label">NO INST:</th>
<td colspan="3" class="Estilo2"><div align="left">
<input name="poblacion[]" type="text" id="poblacion[]" size="6" />
<img src="imagenes/ayuda.gif" alt="Ayuda" width="18" height="18" onmouseover="muestraAyuda(event, 'beneficiario')" /></div></td>
</tr>
<tr>
<th class="label">Pasantes (cuando aplica):</th>
<td colspan="3" class="Estilo2"><div align="left">
<input name="poblacion[]" type="text" id="poblacion[]" size="6" />
</div></td>
</tr>

poblacion[] es el array al cual le quiero realizar la suma de sus valores.




el codigo de validacion que estaba creando es este pero no me funciona:

function comprobar()

{

var chks = document.getElementsByName('poblacion[]');//here rr[] is the name of the textbox
var total;
for (var i = 0; i<chks.length; i++)
{
total+= chks[i].value;
alert("la suma es," +total);
return false;
}
}
  #2 (permalink)  
Antiguo 29/06/2011, 11:59
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 14 años, 11 meses
Puntos: 43
Respuesta: Suma de valores en arrays

Hola zeichen !

Veo algunos errores en la función de javascript:

1) Siempre declara y inicializa tus variables con un valor inicial, para saber de que tipo es.

2) No deberías tener el "return false" dentro del ciclo for, en la primera iteración se saliría del bucle y no sumaría todos los valores.

3) Los valores obtenidos de las cajas de texto son cadenas, deberías convertirlas a números ya sea utilizando la función parseInt si son enteros o parseFloat si contiene decimales, si no lo conviertes concatenaría el resultado.

4) El alert del total debería llamarse al finalizar el ciclo.

Código javascript:
Ver original
  1. function comprobar() {
  2.     var chks = document.getElementsByName('poblacion[]');
  3.     var total = 0;
  4.     for(var i = 0; i < chks.length; i++) {
  5.         total += parseInt(chks[i].value);
  6.     }
  7.     alert("la suma es, " + total);
  8. }



Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 30/06/2011, 10:07
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Suma de valores en arrays

Muchisimas Gracias amigo jahepi!

Me ha funcionado el codigo de la manera como me lo colocaste, de verdad muy agradecido, ademas de las aclaratorias que me das en cuanto a mis erros, debo aclarar que soy programador pero especialista en PHP por eso tantas dudas con javascript.

SOLO UNA COSA, EL CODIGO ME SUMA SIEMPRE Y CUANDO SE LLENEN TODOS LOS TEXTBOX DE MI ARRAY, SI FALTA ALGUNO, NO LO SUMA...:S QUE HAGO??
  #4 (permalink)  
Antiguo 30/06/2011, 13:19
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 14 años, 11 meses
Puntos: 43
Respuesta: Suma de valores en arrays

Cita:
Iniciado por zeichen Ver Mensaje
Muchisimas Gracias amigo jahepi!

Me ha funcionado el codigo de la manera como me lo colocaste, de verdad muy agradecido, ademas de las aclaratorias que me das en cuanto a mis erros, debo aclarar que soy programador pero especialista en PHP por eso tantas dudas con javascript.

SOLO UNA COSA, EL CODIGO ME SUMA SIEMPRE Y CUANDO SE LLENEN TODOS LOS TEXTBOX DE MI ARRAY, SI FALTA ALGUNO, NO LO SUMA...:S QUE HAGO??
Hola zeichen !

Cuando dejas vacío el campo o pones algún caracter que no sea numérico al utilizar la función parseInt retorna que el valor no es un número (NaN), por eso el error al sumar.

Tienes que comprobar que si el valor no es un numérico no sumar el valor:

Código javascript:
Ver original
  1. function comprobar() {
  2.     var chks = document.getElementsByName('poblacion[]');
  3.     var total = 0;
  4.     for(var i = 0; i < chks.length; i++) {
  5.         var valor = parseInt(chks[i].value);
  6.         if(isNaN(valor) == false) {
  7.             total += parseInt(chks[i].value);
  8.         }
  9.     }
  10.     alert("la suma es, " + total);
  11. }

Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #5 (permalink)  
Antiguo 30/06/2011, 14:01
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Suma de valores en arrays

Hermano, excelente tu ayuda... Muchas gracias ya estoy trabajando en mi proyecto, esto me tenia en stop, espero seguir contando con ayuda de especialistas!

Saludos y nuevamente gracias.
  #6 (permalink)  
Antiguo 30/06/2011, 17:15
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 9 años, 5 meses
Puntos: 310
Respuesta: Suma de valores en arrays

Cita:
Iniciado por jahepi
Código javascript:
Ver original
  1. var valor = parseInt(chks[i].value);
  2.         if(isNaN(valor) == false) {
  3.             total += parseInt(chks[i].value);
  4.         }
Yo lo cambiaría por esto:
Código Javascript:
Ver original
  1. total += parseInt(chks[i].value) || 0;
para reducir código, además de que es más legible.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 06/07/2011, 09:37
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Suma de valores en arrays

Queridos compañeros ahora se me presenta un nuevo obstaculo, espero me puedan ayudar, la suma anterior salio de lo mejor, excelente 20 puntos por ese apoyo que me brindaron, ahora debo comparar que la suma de esos valores coincida con la suma de un campo hidden que se genera en la fila posterior la cual sera llenada por el usuario, aqui les coloco el codigo ultilizado:

Código:
 <input type="hidden" id="num_pub" name="num_pub" value="0" />
    <input type="hidden" id="cant_pub" name="cant_pub" value="0" />
    N&deg; de Personas</span>
      <input name="publica_n" type="text" id="publica_n" size="2" />
      <span class="label"> Nombre:</span>
      <input name="publica_nom" type="text" id="publica_nom" />
    </div></fieldset>
      
          <div align="center">
            <input type="reset" id="btnCancelpub" name="btnCancelpub" value="Cancelar"  onclick="cancelarpub();" />
            <input type="button" id="btnAgregarpub" name="btnAgregarpub" value="A&ntilde;adir" class="buttons_aplicar" onclick="publica(document.getElementById('cant_pub'));" />


Código:
function publica(obj){
		obj.value = parseInt(obj.value) + 1;
		var oId = obj.value;
		var publica = document.getElementById("publica_nom");
		var publica1 = document.getElementById("publica_n");
		
	
		var strHtml4 = publica.value + '<input type="hidden" id="hdnpublica_' + oId + '" name="hdnpublica_' + oId + '" value="' + publica.value + '"/>' ;
		var strHtml5 = publica1.value + '<input type="hidden" id="hdnpublica1_' + oId + '" name="hdnpublica1_' + oId + '" value="' + publica1.value + '"/>' ;
    		var strHtml6 = '<img src="images/delete.png" width="16" height="16" alt="Eliminar" onclick="if(confirm(\'Realmente desea eliminar esta opcion?\')){eliminarFila(' + oId + ');}"/>';
    		strHtml6 += '<input type="hidden" id="hdnIdCampos_' + oId +'" name="hdnIdCampos[]" value="' + oId + '" />';
		var objTr = document.createElement("tr");
		objTr.id = "rowDetalle_" + oId;
		var objTd4 = document.createElement("td");
		objTd4.id = "tdDetall_3_" + oId;	
		objTd4.innerHTML = strHtml4;
		var objTd5 = document.createElement("td");
		objTd5.id = "tdDetalle_4_" + oId;	
		objTd5.innerHTML = strHtml5;
		var objTd6 = document.createElement("td");
		objTd6.id = "tdDetalle_6_" + oId;	
		objTd6.innerHTML = strHtml6;

		
		objTr.appendChild(objTd4);
		objTr.appendChild(objTd5);
		objTr.appendChild(objTd6);

		var objTbody = document.getElementById("tbpub");
		objTbody.appendChild(objTr);
		return false;	//evita que haya un submit por equivocacion.
	}
	function eliminarFila(oId){
		var objHijo = document.getElementById('rowDetalle_' + oId);
		var objPadre = objHijo.parentNode;
		objPadre.removeChild(objHijo);
		return false;
	}
Aqui esta todo el codigo necesario para generar los campos que deseo sumar, en este caso es el campo "hdnpublica1_" el cual toma el valor introducido en "publica_n" y los va colocando en un frameset justo debajo de los campos de texto publica_n y publica_nom.

Espero su ayuda...GRACIAS DE ANTEMANO
  #8 (permalink)  
Antiguo 11/07/2011, 11:30
 
Fecha de Ingreso: diciembre-2006
Mensajes: 20
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Suma de valores en arrays

Que hubo compañeros, help me please...en cuanto puedan y quien pueda!!!!

Etiquetas: arrays, suma
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:19.