Foros del Web » Programando para Internet » Javascript »

NaN en funcion SUMA()

Estas en el tema de NaN en funcion SUMA() en el foro de Javascript en Foros del Web. Saludos. Tengo lo siguiente: Código HTML: <SCRIPT LANGUAGE= "JavaScript" > <!-- function sumar() { elem_1=document.guardar.1.value; elem_2=document.guardar.2.value; var t=0; t=parseInt(elem_1)+parseInt(elem_2); document.guardar.SAT.value=t; } //--> </SCRIPT> <FORM METHOD=POST ...
  #1 (permalink)  
Antiguo 12/08/2004, 06:48
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
NaN en funcion SUMA()

Saludos.

Tengo lo siguiente:

Código HTML:
<SCRIPT LANGUAGE="JavaScript">
<!--
function sumar() {
	elem_1=document.guardar.1.value;
	elem_2=document.guardar.2.value;
	var t=0;
	
	t=parseInt(elem_1)+parseInt(elem_2);
	document.guardar.SAT.value=t;		
}
//-->
</SCRIPT>

<FORM METHOD=POST ACTION="" name="guardar">
1: <input type="text" name="area" size="25" maxlength="50" value="" onkeyup="sumar()" id="1"><br>
2: <input type="text" name="terraza_techada" size="25" maxlength="50" value="" onkeyup="sumar()" id="2"><br>
3 RESULTADO: <input type="text" name="SAT" size="25" maxlength="50" value="" id="SAT"><br>
</FORM> 
Resulta que cuando comienzo a ingresar valores en los campos, en el INPUT SAT me aparece un "NaN". Si le coloco a los campos un value inicial "0" se le quita eso, pero la cosa esta en que no puedo colocar valores en el value.

Cómo resuelvo eso??

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 12/08/2004 a las 06:49
  #2 (permalink)  
Antiguo 12/08/2004, 07:25
Avatar de PatomaS
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: En alguna otra parte
Mensajes: 4.656
Antigüedad: 20 años, 1 mes
Puntos: 63
Hola

Bueno, no se porque no puedes asignar un 0 al inicio, pero bueno, con este pequeño cambio funciona sin aparecer el NaN.

Código:
<SCRIPT LANGUAGE="JavaScript">
<!--
function sumar() {
	elem_1=document.guardar.a.value;
	elem_2=document.guardar.b.value;
	var t=0;
	
	t=parseInt(elem_1)+parseInt(elem_2);
	document.guardar.SAT.value=t;		
}
//-->
</SCRIPT>
Código:
<form method="post" action="" name="guardar">
	1: <input type="text" name="area" size="25" maxlength="50" value="" id="a"><br>
	2: <input type="text" name="terraza_techada" size="25" maxlength="50" value=""  id="b"><br>
	3 RESULTADO: <input type="text" name="SAT" size="25" maxlength="50" value="" id="SAT"><br>
	<input type="button" onclick="javascript:sumar()" value="efectuar la suma">
</form>
Espero que te sirva

Felicidad
__________________
¡ hey, hou, hou, hey !
  #3 (permalink)  
Antiguo 12/08/2004, 11:16
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
Saludos.

Uhmm, ok explico un poco, resulta que los value se van llenando con valores que vienen de una tabla mysql y dependiendo donde este el usuario se cargaran cosas distintas o simplemente no se cargara nada. Pero ya no puedo validar cuando se carga o cuando no.

Por eso lo que quiero es trabajarlo con la función en javascript.

Esa modificación que hiciste esta muy bien, pero yo requiero que se vayan sumando los campos al momento de ir ingresando los valores en cada campo correspondiente, no al final con la acción de un botón.

De todas formas gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #4 (permalink)  
Antiguo 12/08/2004, 12: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:

A ver si te sirve esto:

Código:
function sumar() {
	elem_1 = (isNaN(document.guardar.1.value)) ? "0" : document.guardar.1.value;
	elem_2 = (isNaN(document.guardar.2.value)) ? "0" : document.guardar.2.value;
//	var t=0;
	
//	t=parseInt(elem_1)+parseInt(elem_2);
	document.guardar.SAT.value = parseInt(elem_1) + parseInt(elem_2);		
}
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 12/08/2004, 12:15
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
Saludos Caricatos.

Al entrar al navegador me da el siguiente error:

Error: Se Esperaba ')'
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #6 (permalink)  
Antiguo 12/08/2004, 12:30
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:

Tal vez este en otra linea el error, porque isNaN funciona correctamente y las asignaciones parecen estar bien...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 12/08/2004, 12:34
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
Este es el código

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
function sumar() {
	elem_1 = (isNaN(document.guardar.1.value)) ? "0" : document.guardar.1.value;
	elem_2 = (isNaN(document.guardar.2.value)) ? "0" : document.guardar.2.value;
	//var t=0;
	
	//t=parseInt(elem_1)+parseInt(elem_2);
	document.guardar.SAT.value = parseInt(elem_1) + parseInt(elem_2);
	//document.guardar.SAT.value=t;		
}
</SCRIPT>

</HEAD>

<BODY>
<FORM METHOD=POST ACTION="a" name="guardar">
1: <input type="text" name="area" size="25" maxlength="50" value="" onkeyup="javascript:sumar();" id="1"><br>
2: <input type="text" name="terraza_techada" size="25" maxlength="50" value="" onkeyup="javascript:sumar();" id="2"><br>
3 RESULTADO: <input type="text" name="SAT" size="25" maxlength="50" value="" id="SAT"><br>
</FORM>
</BODY>
</HTML> 
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #8 (permalink)  
Antiguo 12/08/2004, 17:25
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:

Estabas tratando de referenciar elementos de un formulario con el id, y para formularios es mejor usar el name... con el id debes usar getElementById

Usa esta función:

function sumar() {
elem_1 = (isNaN(document.guardar["area"].value)) ? "0" : document.guardar["area"].value;
elem_2 = (isNaN(document.guardar["terraza_techada"].value)) ? "0" : document.guardar["terraza_techada"].value;
document.guardar.SAT.value = parseInt(elem_1) + parseInt(elem_2);
}

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 13/08/2004, 06:35
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
Será que tengo una maldición??

Realice los cambios que me dices, aquí esta:

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function sumar() {
	elem_1 = (isNaN(document.guardar["area"].value)) ? "0" : document.guardar["area"].value;
	elem_2 = (isNaN(document.guardar["terraza_techada"].value)) ? "0" : document.guardar["terraza_techada"].value;
	document.guardar.SAT.value = parseInt(elem_1) + parseInt(elem_2);
}
//-->
</SCRIPT>

</HEAD>

<BODY>
<FORM METHOD=POST ACTION="a" name="guardar">
1: <input type="text" name="area" size="25" maxlength="50" value="" onkeyup="javascript:sumar();" id="area"><br>
2: <input type="text" name="terraza_techada" size="25" maxlength="50" value="" onkeyup="javascript:sumar();" id="terraza_techada"><br>
3 RESULTADO: <input type="text" name="SAT" size="25" maxlength="50" value="" id="SAT"><br>
</FORM>
</BODY>
</HTML> 
Pero aún me sigue apareciendo el bendito NaN cuando carga el navegador.

Despues que comienzo a colocar números, todo fino, suma bien. Pero cómo demonios elimino el NaN ??

Y le agrego una preguntita, si quiciera que el resultado me lo mostrara en un texto normal y no dentro de una caja de texto, cómo haría??

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 13/08/2004 a las 07:14
  #10 (permalink)  
Antiguo 13/08/2004, 09:57
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:

Lo único que se me ocurre es que le des un valor inicial de 0 a los campos o modifica sumar más o menos así:

Código:
function sumar() {
	elem_1 = (isNaN(document.guardar["area"].value) || document.guardar["area"].value == "") ? "0" : document.guardar["area"].value;
	elem_2 = (isNaN(document.guardar["terraza_techada"].value) || document.guardar["terraza_techada"].value == "") ? "0" : document.guardar["terraza_techada"].value;
	document.guardar.SAT.value = parseInt(elem_1) + parseInt(elem_2);
}
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 13/08/2004, 10:30
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 4 meses
Puntos: 1
Saludos.

Ahora si, perfecto.

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
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 09:39.