Foros del Web » Programando para Internet » Javascript »

evitar que salga NaN en una simple suma???

Estas en el tema de evitar que salga NaN en una simple suma??? en el foro de Javascript en Foros del Web. hola, bueno tengo esta funcion: Código: function totales2(){ total3=0; tt1=0; tt2=0; tt1=document.getElementById("2_1").innerHTML; tt2=document.getElementById("2_2").innerHTML; if (tt1!="" || tt2!="") { total3=parseInt(tt1)+parseInt(tt2); document.getElementById("t_2").innerHTML=total3; }else{ document.getElementById("t_2").innerHTML=total3; } } es ...
  #1 (permalink)  
Antiguo 21/02/2006, 15:47
 
Fecha de Ingreso: diciembre-2003
Mensajes: 120
Antigüedad: 20 años, 5 meses
Puntos: 0
evitar que salga NaN en una simple suma???

hola, bueno tengo esta funcion:

Código:
function totales2(){
	total3=0;
	tt1=0;
	tt2=0;
	tt1=document.getElementById("2_1").innerHTML;
	tt2=document.getElementById("2_2").innerHTML;
		if (tt1!="" || tt2!="")
			{
			total3=parseInt(tt1)+parseInt(tt2);
			document.getElementById("t_2").innerHTML=total3;
			}else{
			document.getElementById("t_2").innerHTML=total3;
			}
		}
es una simple suma del contenido de dos celdas ("2_1" y "2_2"), entonces los datos(valores numericos) a esas celdas vienen de otras operaciones, en la que algunas veces puede ser que no llegue ningun dato a alguna de esas dos celdas (que una este vacia, o las dos), y al sumar un dato con valor y otro sin valor pues me da NaN (osea que no es un numero).

necesito que:

- si no hay datos en las 2 celdas me de "0"
- si solo hay un dato en una de las dos celdas me de la suma de "0+ el dato" o que me de ese dato unico.
- y si estan las dos celdas con datos pues me de la suma de las 2
- y evitar que salga "NaN" en ningun caso.

no se, ya he probado muchas cosas, me hechais una mano!!!

gracias y un saludo!!!
__________________
jorcri...
  #2 (permalink)  
Antiguo 21/02/2006, 17:37
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
Cita:
function totales2(){
tt1=document.getElementById("2_1").innerHTML;
tt2=document.getElementById("2_2").innerHTML;
document.getElementById("t_2").innerHTML=((tt1=="" )?0:parseInt(tt1))+((tt2=="")?0:parseInt(tt2));
}
en el caso de que los numeros a sumar puedan ser con decimales, cambiar parseInt por ParseFloat

saludos
__________________
by Capitán Buscapina
.
  #3 (permalink)  
Antiguo 21/02/2006, 17:51
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
Cita:
function totales2(){
tt1=document.getElementById("2_1").innerHTML;
tt2=document.getElementById("2_2").innerHTML;
document.getElementById("t_2").innerHTML=((tt1=="" )?0:parseInt(tt1))+((tt2=="")?0:parseInt(tt2));
}
en el caso de que los numeros a sumar puedan ser con decimales, cambiar parseInt por ParseFloat

saludos
__________________
by Capitán Buscapina
.
  #4 (permalink)  
Antiguo 22/02/2006, 03:00
 
Fecha de Ingreso: diciembre-2003
Mensajes: 120
Antigüedad: 20 años, 5 meses
Puntos: 0
como siempre perfecto, puedes explicarme lo del "?0", que significa que le da ese valor??

y si quisiera que el resultado no mostrase mas de dos decimales, seria con ToString("#.##"); pero donde se lo indico???


gracias de nuevo, un saludo!!!
__________________
jorcri...
  #5 (permalink)  
Antiguo 22/02/2006, 09:29
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
Cita:
Iniciado por jorcri
.. puedes explicarme lo del "?0", que significa que le da ese valor??...
Cita:
JScript también admite una forma condicional implícita. Utiliza un signo de interrogación después de la condición que va a probar (en lugar de la palabra if antes de la condición). También especifica dos alternativas, una para usarla si la condición se cumple y otra para usarla si no se cumple. Dos puntos deben separar las alternativas.

var horas = "";

// Código que especifica que la variable horas tiene el contenido de
// laHora o laHora - 12.

horas += (laHora >= 12) ? " p.m." : " a.m.";


Cita:
y si quisiera que el resultado no mostrase mas de dos decimales, seria con ToString("#.##"); pero donde se lo indico???
yo lo haría sí:
(un ejemplo mas simple, para que redondee a 2 decimales)
Cita:
numero=123456,3456
numero=Math.round(numero*100)/100;

saludos
__________________
by Capitán Buscapina
.
  #6 (permalink)  
Antiguo 22/02/2006, 14:40
 
Fecha de Ingreso: diciembre-2003
Mensajes: 120
Antigüedad: 20 años, 5 meses
Puntos: 0
ok, muchas gracias por la explicacion y por los 2 decimales, lo averigue, aunque me lio un poco mas pero basicamente es lo mismo:

Código:
redondea *=100;
redondea = Math.round(redondea);
redondea /=100


muchisimas gracias.

de verdad se agradece gente como tu con estas ganas de ayudar!!!

un saludo!!!
__________________
jorcri...
  #7 (permalink)  
Antiguo 22/02/2006, 16:52
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
de nada.

un saludos
__________________
by Capitán Buscapina
.
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:13.