Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con parseFloat

Estas en el tema de Problema con parseFloat en el foro de Javascript en Foros del Web. Hola. He leido en muchos lugares e incluso en el foro mismo. y al parecer todo se mira bien Estoy tratando de sumar (valores) almacenados ...
  #1 (permalink)  
Antiguo 13/06/2013, 17:00
 
Fecha de Ingreso: junio-2013
Ubicación: San Salvador
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Problema con parseFloat

Hola.
He leido en muchos lugares e incluso en el foro mismo.
y al parecer todo se mira bien

Estoy tratando de sumar (valores) almacenados en unos inputs distribuidos en una columna pero hago el recorrido de ellos con un FOR y un array a traves de document.getElementById.
La funcion va en el ONBLUR del TEXTO y otro Texto (donde quiero el total) es el que se actualiza obviamente al perder el foco el primero. Pero el resultado no es la suma de lo VALUES sino que o la Concatenacion de los valores uno despues de otro o el error NaN.

Vale aclarar que ya utilice varios parseFloat en distintas posiciones y el resultado es el mismo

agradezco su ayuda de antemano.

Código:
 function sumarcol(form1) 
   {
	   var sumac = ["dt1","dt2","dt3","dt4","dt5","dt6","dt7","dt8","dt9","dt10"];
       var TotalDoc = 0.00;
	   
   	for (var i=0, sumat; sumat = sumac[i]; i++)
		{ 
			TotalDoc= parseFloat(TotalDoc) + parseFloat(document.getElementById(sumac[i]).text);
		}
		form1.total1.value  = TotalDoc;
	form1.submit;	
   }
  #2 (permalink)  
Antiguo 13/06/2013, 17:23
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Problema con parseFloat

En lugar de .text tienes que hacer .value:
Código Javascript:
Ver original
  1. TotalDoc= parseFloat(TotalDoc) + parseFloat(document.getElementById(sumac[i]).value);
__________________
twitter: @imbuzu
  #3 (permalink)  
Antiguo 13/06/2013, 18:07
 
Fecha de Ingreso: junio-2013
Ubicación: San Salvador
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema con parseFloat

Cita:
Iniciado por buzu Ver Mensaje
En lugar de .text tienes que hacer .value:
Código Javascript:
Ver original
  1. TotalDoc= parseFloat(TotalDoc) + parseFloat(document.getElementById(sumac[i]).value);
Tienes toda la razon... es error mio en el primer post.
Copie el codigo de la ultima prueba que hice... Pero en realidad ahorita tengo VALUE en vez de TEXT... y el error persiste.

Lo vuelvo a escribir aqui.

Código:
function sumarcol(form1) 
   {
	   var sumac = ["dt1","dt2","dt3","dt4","dt5","dt6","dt7","dt8","dt9","dt10"];
       var TotalDoc = 0.00;
	   
   	for (var i=0, sumat; sumat = sumac[i]; i++)
		{ 
			TotalDoc= parseFloat(TotalDoc) + parseFloat(document.getElementById(sumac[i]).value);
		}
		form1.total1.value  = TotalDoc;
	form1.submit;	
   }
Gracias de todas formas.

Última edición por netos84; 13/06/2013 a las 18:10 Razón: agradecimiento a la respuesta
  #4 (permalink)  
Antiguo 13/06/2013, 22:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
Respuesta: Problema con parseFloat

Puedes setear un tipo de dato numérico al value de un form??
__________________
_
  #5 (permalink)  
Antiguo 14/06/2013, 04:48
 
Fecha de Ingreso: mayo-2011
Ubicación: Palma de Mallorca
Mensajes: 108
Antigüedad: 13 años
Puntos: 4
Respuesta: Problema con parseFloat

Hola netos84:

Yo diria que tu for está mal hecho.

Estas creando una variable sumat que no le asignas ningún valor, por lo tanto es undefinded; luego en la condición de ejecución del for, estas comparando sumat = sumac[i], estas indicando que si undefined es igual a una cadena de texto que ejecute el for, cosa que no se cumple nunca.

Solución:

Código Javascript:
Ver original
  1. function sumarcol(form1)
  2.    {
  3.        var sumac = ["dt1","dt2","dt3","dt4","dt5","dt6","dt7","dt8","dt9","dt10"];
  4.        var TotalDoc = 0.00;
  5.        
  6.     for (var i=0; i < sumac.length; i++)
  7.         {
  8.             TotalDoc= parseFloat(TotalDoc) + parseFloat(document.getElementById(sumac[i]).value);
  9.         }
  10.         form1.total1.value  = TotalDoc;
  11.     form1.submit;  
  12.    }

Por lo menos así si que se ejecutará el for.

Comprueba si funciona así y saludos.
  #6 (permalink)  
Antiguo 14/06/2013, 04:53
 
Fecha de Ingreso: mayo-2011
Ubicación: Palma de Mallorca
Mensajes: 108
Antigüedad: 13 años
Puntos: 4
Respuesta: Problema con parseFloat

También para mejorar el código reduce la condición del for de esta manera:

Código Javascript:
Ver original
  1. TotalDoc += parseFloat(document.getElementById(sumac[i]).value);

Ten en cuenta que TotalDoc ya lo estableces como un Float y si le sumas un Float, seguirá siendo Float, por lo cual, no tienes que estar a cada ciclo del for pasando TotalDoc a Float.

Para poner un ejemplo más gráfico, es como si tuvieras una pelota de color rojo y la vas pintando de rojo para que sea rojo, es una redundancia enorme.

Espero que te pueda guiar.

Saludos

Última edición por tonigomila1988; 14/06/2013 a las 05:02 Razón: Mensaje incompleto
  #7 (permalink)  
Antiguo 14/06/2013, 08:30
 
Fecha de Ingreso: junio-2013
Ubicación: San Salvador
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema con parseFloat

Gracias por sus respuestas....
realice los cambios que me indicaron pero sigue dando el mismo error.

Código Javascript:
Ver original
  1. function sumarcol(form1)
  2.    {
  3.        var sumac = ["dt1","dt2","dt3","dt4","dt5","dt6","dt7","dt8","dt9","dt10"];
  4.        var TotalDoc = 0.00;
  5.        
  6.     for (var i=0; i < sumac.length; i++)
  7.         {
  8.             TotalDoc += TotalDoc + parseFloat(document.getElementById(sumac[i]).value);
  9.         }
  10.         form1.total1.value  = TotalDoc;
  11.     form1.submit;  
  12.    }

agrego una imagen para ilustrar



Se trata de sumar en la celda Total Documentos todas las cantidades introducidas en la columna MONTO. Y la funcion que me presenta el problema se ejecuta en el onBlur de cada celda de la columna MONTO. Otro error que me da al no utilizar parseFloat es que concatena todas las cantidades una despues de la otra siempre en la celda.

En fin. seguire probando a ver que pasa.

Saludos

Última edición por netos84; 14/06/2013 a las 08:41 Razón: cambio de etiqueta [HIGHLIGHT="Javascript"]
  #8 (permalink)  
Antiguo 14/06/2013, 09:10
 
Fecha de Ingreso: junio-2013
Ubicación: San Salvador
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema con parseFloat

Cita:
Iniciado por opzina Ver Mensaje
Puedes setear un tipo de dato numérico al value de un form??
Gracias... Tu idea me hizo pensar en la solución.
debido a que recorro todas las celdas para hacer la suma, me puse a pensar en los valores iniciales de las mismas (valores iniciales que no habia seteado). Entonces llegue a la conclusión de que no se interpretaba el tipo de datos de las celdas que no introducía valor alguno (es decir 'null')... entonces sumaba un float + un string y el resultado otro string.

Pero ya esta solucionado.

Gracias por sus aportes.
  #9 (permalink)  
Antiguo 14/06/2013, 13:00
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Problema con parseFloat

Exactamente eso es lo que pasa. Siempre que quieras hacer este tipo de cosas asegurate primero que tengas datos con los que trabajar. Yo primero haria un isNaN o de perdida un chequeo para asegurarme que hay un valor en el campo.
__________________
twitter: @imbuzu

Etiquetas: Ninguno
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 17:21.