Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Sumar en un For

Estas en el tema de Sumar en un For en el foro de Javascript en Foros del Web. Hola Foro!!! Tengo este codigo javascript Código: function sumarCual(arrid) { ids = arrid.split(","); var totalcual; for (var x=0; x<ids.length; x++) { element = "total_dimcual"+ids[x]; //alert(element); ...
  #1 (permalink)  
Antiguo 22/07/2015, 15:35
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Sumar en un For

Hola Foro!!!

Tengo este codigo javascript

Código:
function sumarCual(arrid) {
	ids = arrid.split(",");	
	
	var totalcual;
		for (var x=0; x<ids.length; x++) {
			element = "total_dimcual"+ids[x];
			//alert(element);
			subtotal = document.getElementById(element).value;
			totalcual = parseInt(totalcual) + subtotal;
		}
	alert(totalcual);
	document.getElementById("total_cual").value=totalcual;
}
Un ejemplo de datos que paso son: 1,2,3,4,5,6,7,8
El alert me muestra el id de mis elementos inputs que deseo leer. Los cuales tienen valores diferentes.
Si hago un alert(subtotal) me va mostrando uno a uno los valores que tengo.
En PHP por lo general si deseo hacer esto, hago algo parecido a esto:

Código PHP:
$array = array(1,4,6,7,9);
for (
$i=0;$i<10;$i++) {
 
$subtotal $array[$i];
 
$total $total $subtotal;

Pero en Javascript no logro totalcual vaya sumando esto. Alguna sugerencia...
  #2 (permalink)  
Antiguo 22/07/2015, 15:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sumar en un For

El valor que debes de parsear a entero es el del cada caja de texto pues llegan como cadenas. Tú estás parseando el acumulado.

También puedes usar los métodos iterativos del objeto Array y hacer algo como esto:

Código Javascript:
Ver original
  1. var total = [].map.call(document.querySelectorAll("[id^=total_dimcual]"), function(elem){
  2.     return parseInt(elem.value);
  3. }).reduce(function(prev, next){
  4.     return prev + next;
  5. });
  6.  
  7. console.log(total); //Muestra la suma total de los valores de los <input> cuyo id empieza por "total_dimcual"

El método .map() crea un nuevo array con los valores del array pasado como argumento o por los valores devueltos por la llamada de retorno, que en este caso devuelve el valor entero de cada caja de texto, mientras que el método .reduce() reduce a un solo elemento a todos los elementos del array adjunto, que en este caso es el array resultante del método anterior. En la llamada de retorno de este método, devuelvo la suma del valor previo (al iniciar, es el primero de los elementos del array) con el valor actual (al iniciar, es el segundo de los elementos del array).

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 22/07/2015 a las 22:57 Razón: Mejor forma
  #3 (permalink)  
Antiguo 22/07/2015, 15:47
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Sumar en un For

Principalmente deberías iniciar la variable totalcual a 0:

Código Javascript:
Ver original
  1. var totalcual = 0;

Y lo que comenta Alexis...
  #4 (permalink)  
Antiguo 22/07/2015, 16:26
 
Fecha de Ingreso: junio-2013
Mensajes: 23
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Sumar en un For

Como dice PHPeros la variable totalcual debe ser inicializada en 0 para evitar que te devuelva NaN y te recomiendo darle parseInt al subtotal.

totalcual no necesita parseInt ya que fue declarada como Int anteriormente y no es necesario volver a hacerlo.

al hacer la suma no se necesita totalcual = totalcual + subtotal, solo con poner totalcual += subtotal;
  #5 (permalink)  
Antiguo 22/07/2015, 16:39
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Sumar en un For

Gracias por contestar, había probado lo de setear a 0 totalcual, pero no habia parseado a entero lo que traia de los inputs. Al parsear resolví todo.

Gracias

Etiquetas: input, php, valor
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 05:40.