Foros del Web » Programando para Internet » Javascript »

Error en Calculadora

Estas en el tema de Error en Calculadora en el foro de Javascript en Foros del Web. Hola a todos. Soy novato en esto del JavaScript y mi primer "reto" es esta calculadora, pero, por mucho que me lo miro no se ...
  #1 (permalink)  
Antiguo 18/04/2007, 10:40
 
Fecha de Ingreso: junio-2004
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 19 años, 10 meses
Puntos: 2
Error en Calculadora

Hola a todos.
Soy novato en esto del JavaScript y mi primer "reto" es esta calculadora, pero, por mucho que me lo miro no se donde debe estar el error. Basicamente, mi error es que cuando hago alguna operacion, cuando le doy a "igual" me devuelve "NaN". Vamos, que no se que mas cambiar, jeje. Alguna ayudita? jeje
Gracias!!

Código HTML:
<html>
<head>
<title>CALCULADORA EN JS</title>
<script language="javascript">
var calculo = "";
var op = "";
var resu2 = "";

function intro(intr){
fcalcu.resu.value = fcalcu.resu.value + intr;
resu2 = resu2 + intr;
}

function sumar(s1)
{
calculo = eval(calculo) + eval(resu2);
fcalcu.resu.value = "";
resu2 = "";
op = "SUMA";
}

function restar(s2)
{
calculo = calculo - eval(resu2);
fcalcu.resu.value = "";
resu2 = "";
op = "RESTA";
}

function multi(s3)
{
calculo = calculo * eval(resu2);
fcalcu.resu.value = "";
resu2 = "";
op = "MULTIPLICACION";
}

function dividir(s4)
{
calculo = calculo / eval(resu2);
fcalcu.resu.value = "";
resu2 = "";
op = "DIVISION";
}

function mostrar(igu){
	switch(op)
	{
	case "SUMA":
	calculo = calculo + eval(resu2);
	resu2 = "";
	fcalcu.resu.value = calculo;
	break;
	
	case "RESTA":
	calculo = calculo - eval(resu2);
	resu2 = "";
	fcalcu.resu.value = calculo;
	break;
	
	case "MULTIPLICACION":
	calculo = calculo * eval(resu2);
	resu2 = "";
	fcalcu.resu.value = calculo;
	break;
	
	case "DIVISION":
	calculo = calculo / eval(resu2);
	resu2 = "";
	fcalcu.resu.value = calculo;
	break;
	}
}

function borra(){
fcalcu.resu.value = "";
resu2 = "";
calculo = "";
op = "";
}
</script>
</head>
<body>
<h1>Calculadora JS </h1>
<form name="fcalcu">
<input type="text" name="resu" maxlenght="10" readonly><br>
<input type="button" name="n1" value="1" onclick="intro(fcalcu.n1.value)"><input type="button" name="n2" value="2" onclick="intro(fcalcu.n2.value)"><input type="button" name="n3" value="3" onclick="intro(fcalcu.n3.value)"><br>
<input type="button" name="n4" value="4" onclick="intro(fcalcu.n4.value)"><input type="button" name="n5" value="5" onclick="intro(fcalcu.n5.value)"><input type="button" name="n6" value="6" onclick="intro(fcalcu.n6.value)"><br>
<input type="button" name="n7" value="7" onclick="intro(fcalcu.n7.value)"><input type="button" name="n8" value="8" onclick="intro(fcalcu.n8.value)"><input type="button" name="n9" value="9" onclick="intro(fcalcu.n9.value)"><br>
<input type="button" name="" value="-"><input type="button" name="n0" value="0" onclick="intro(fcalcu.n0.value)"><input type="button" name="" value="-"><br>
<input type="button" value="SUMAR" onclick="sumar(resu2)"><input type="button" value="RESTAR" onclick="restar(resu2)"><br>
<input type="button" value="MULTIPLICAR" onclick="multi(resu2)"><input type="button" value="DIVIDIR" onclick="dividir(resu2)"><br>
<input type="button" value="IGUAL" onclick="mostrar(resu2)"><input type="button" value="Borrar" onclick="borra()">
</form>
</body>
</html> 
  #2 (permalink)  
Antiguo 18/04/2007, 12:32
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Error en Calculadora

¿Has hecho un debug con alerts o algo?

Si lo haces, descubres como en la funcion sumar, calculo es undefined desde el primer momento, así que hacerle un eval(calculo) no tiene sentido, y al sumarle algo resulta NaN.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 18/04/2007, 13:02
 
Fecha de Ingreso: junio-2004
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 19 años, 10 meses
Puntos: 2
Re: Error en Calculadora

Cita:
Iniciado por derkenuke Ver Mensaje
¿Has hecho un debug con alerts o algo?

Si lo haces, descubres como en la funcion sumar, calculo es undefined desde el primer momento, así que hacerle un eval(calculo) no tiene sentido, y al sumarle algo resulta NaN.
Ya he borrado el eval y me dice que "1 + 1 = 11". Algo mas debe fallar. Ya he probado ha hacerlo con un debug pero aun asi hay cosas que se me escapan..soy muy novato en esto.
Gracias por tu ayuda ^^
  #4 (permalink)  
Antiguo 18/04/2007, 16:14
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Error en Calculadora

Puedes pasar un string a número con la función Number(), o con parseInt() para numeros naturales y parseFloat() para enteros (numeros con decimales). Así 1+1=2 al ser números, y 1+1=11 al ser strings.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 16:23.