
Calculadora
JavaScript
Publicado el 14 de Enero del 2003 por Pedro
9.439 visualizaciones desde el 14 de Enero del 2003
Calculadora estandard con las operaciones típicas.
<html>
<head><title>Calculadora</title>
<style>
.Derecha{
text-align:right
}
</style>
<SCRIPT LANGUAGE=javascript>
<!--
function Teclado()
{
switch (String(event.keyCode))
{
case "13" :
cmdIgual.focus();
cmdIgual.onclick();
break;
case "67" :
cmdBorrar.onclick();
break;
case "96" :
cmd0.onclick();
break;
case "97" :
cmd1.onclick();
break;
case "98" :
cmd2.onclick();
break;
case "99" :
cmd3.onclick();
break;
case "100" :
cmd4.onclick();
break;
case "101" :
cmd5.onclick();
break;
case "102" :
cmd6.onclick();
break;
case "103" :
cmd7.onclick();
break;
case "104" :
cmd8.onclick();
break;
case "105" :
cmd9.onclick();
break;
case "106" :
cmdMultiplicar.onclick();
break;
case "107" :
cmdMas.onclick();
break;
case "109":
cmdMenos.onclick();
break;
case "110" :
cmdPunto.onclick();
break;
case "111" :
cmdDividir.onclick();
break;
default:
break;
}
}
function Comprobar(Cadena,Objeto)
{
var Comprueba=String(Objeto.value);
var Cadena=String(Cadena.value);
if (Comprueba==".")
{
if (Cadena.indexOf(".")!=-1)
{
return false;
}
else
{
return true;
}
}
else
{
return true;
}
}
function Numero(Obj)
{
if (txtUltEntrada.value =='Num' )
{
if (Comprobar(txtDisplay,Obj)){ txtDisplay.value =txtDisplay.value + Obj.value;}
}
else
{
if (Obj.value=="." )
{
txtDisplay.value="0" + Obj.value;
txtUltEntrada.value='Num';
}
else
{
txtDisplay.value=Obj.value;
txtUltEntrada.value='Num';
}
}
}
function Funcional(Obj)
{
switch (Obj.value)
{
case "C" :
txtAcumulador.value =0;
txtDisplay.value=0;
txtUltEntrada.value='C';
txtUltOperador.value='';
break;
case "Sqr" :
if (isNaN(Math.sqrt(txtDisplay.value)))
{
alert('Número no válido o negativo');
}
else
{
txtDisplay.value=Math.sqrt(txtDisplay.value);
txtUltEntrada.value='Sqr';
txtUltOperador.value='';
}
break;
case "%" :
txtDisplay.value = txtAcumulador.value * txtDisplay.value/100;
txtAcumulador.value = 0;
txtUltEntrada.value='%';
txtUltOperador.value='';
break;
case "*" :
if (txtUltEntrada.value=='Num' && txtUltOperador.value =='')
{
txtAcumulador.value =txtDisplay.value;
txtUltEntrada.value='*';
txtUltOperador.value ='*';
}
else
{ cmdIgual.onclick();
txtUltOperador.value='*';
txtUltEntrada.value='*';
}
break;
case "+" :
if (txtUltEntrada.value=='Num' && txtUltOperador.value =='')
{
txtAcumulador.value =txtDisplay.value;
txtUltEntrada.value='+';
txtUltOperador.value ='+';
}
else
{
cmdIgual.onclick();
txtUltOperador.value='+';
txtUltEntrada.value='+';
}
break;
case "-" :
if (txtUltEntrada.value =="Num" && txtUltOperador.value =='')
{
txtAcumulador.value =txtDisplay.value;
txtUltOperador.value='-';
txtUltEntrada.value='-';
}
else
{
cmdIgual.onclick();
txtUltOperador.value='-';
txtUltEntrada.value='-';
}
break;
case "+/-" :
txtDisplay.value *= -1;
break;
case "/" :
if (txtDisplay.value=="0" && txtAcumulador.value =="0")
{
alert('No se puede dividir por cero');
}
else
{
if (txtUltEntrada.value=="Num" && txtUltOperador.value=='')
{
txtAcumulador.value = txtDisplay.value ;
txtUltEntrada.value='/' ;
txtUltOperador.value='/';
}
else
{
cmdIgual.onclick();
txtUltEntrada.value='/' ;
txtUltOperador.value='/';
}
}
break;
case "=" :
switch (txtUltOperador.value)
{
case "+" :
txtAcumulador.value=Number(txtAcumulador.value)+ Number(txtDisplay.value);
txtDisplay.value=txtAcumulador.value ;
txtUltOperador.value ='';
txtUltEntrada.value ='';
break;
case "*" :
txtAcumulador.value*=txtDisplay.value ;
txtDisplay.value=txtAcumulador.value ;
txtUltOperador.value ='';
txtUltEntrada.value ='';
break;
case "-" :
txtAcumulador.value-=txtDisplay.value ;
txtDisplay.value=txtAcumulador.value ;
txtUltOperador.value ='';
txtUltEntrada.value ='';
break;
case "/" :
txtAcumulador.value /= txtDisplay.value;
txtDisplay.value=txtAcumulador.value ;
txtUltOperador.value ='';
txtUltEntrada.value ='';
break;
default :
txtUltEntrada.value ='';
break;
}
break;
default:
break;
}
}
//-->
</SCRIPT>
</head>
<body bgcolor="#edf6fd">
<TABLE align=center bgColor=#00bfff border=0 cellPadding=1 cellSpacing=1 width="100%">
<TR>
<TD align=middle colSpan=4><INPUT id=txtDisplay class="Derecha" name=txtDisplay readOnly
style="DISPLAY: block; HEIGHT: 22px; WIDTH: 100%" value=0
maxLength=30><INPUT id=txtAcumulador name=txtAcumulador
readOnly style="DISPLAY: none; WIDTH: 30%" width=35><INPUT
id=txtUltOperador name=txtUltOperador style="DISPLAY: none; WIDTH: 30%"
width="30"><INPUT id=txtUltEntrada name=txtUltEntrada
style="DISPLAY: none; WIDTH: 30%" width="30"></TD></TR>
<TR>
<TD align=middle><INPUT id=cmdBorrar name=cmdBorrar style="BORDER-BOTTOM-COLOR: deepskyblue; WIDTH: 30px" type=button value=C width="30" onClick="Funcional(this)"></TD>
<TD align=middle><INPUT id=cmdRaiz name=button2 style="WIDTH: 30px" type=button value=Sqr width="30" onClick="Funcional(this)"></TD>
<TD align=middle><INPUT id=cmdPercent name=cmdPercent onclick=Funcional(this) style="WIDTH: 30px" type=button value=% DESIGNTIMESP="20037" width="30"></TD>
<TD align=middle><INPUT id=cmdDividir name=cmdDividir style="WIDTH: 30px" type=button value=/ width="30" onClick="Funcional(this)"></TD></TR>
<TR>
<TD align=middle><INPUT id=cmd7 name=cmd7 style="WIDTH: 30px" type=button value=7 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmd8 name=cmd8 style="WIDTH: 30px" type=button value=8 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmd9 name=cmd9 style="WIDTH: 30px" type=button value=9 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmdMultiplicar name=cmdMultiplicar style="WIDTH: 30px" type=button value="*" width="30" onClick="Funcional(this)"></TD></TR>
<TR>
<TD align=middle><INPUT id=cmd4 name=cmd4 style="WIDTH: 30px" type=button value=4 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmd5 name=cmd5 style="WIDTH: 30px" type=button value=5 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmd6 name=cmd6 style="WIDTH: 30px" type=button value=6 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmdMenos name=cmdMenos style="WIDTH: 30px" type=button value=- width="30" onClick="Funcional(this)"></TD></TR>
<TR>
<TD align=middle><INPUT id=cmd1 name=cmd1 style="WIDTH: 30px" type=button value=1 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmd2 name=cmd2 style="WIDTH: 30px" type=button value=2 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmd3 name=cmd3 style="WIDTH: 30px" type=button value=3 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmdMas name=cmdMas style="WIDTH: 30px" type=button value=+ width="30" onClick="Funcional(this)"></TD></TR>
<TR>
<TD align=middle><INPUT id=cmd0 name=cmd0 style="WIDTH: 30px" type=button value=0 width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmdMasMenos name=cmdMasMenos style="WIDTH: 30px" type=button value=+/- width="30" onClick="Funcional(this)"></TD>
<TD align=middle><INPUT id=cmdPunto name=cmdPunto style="WIDTH: 30px" type=button value=. width="30" onClick="Numero(this)"></TD>
<TD align=middle><INPUT id=cmdIgual name=cmdIgual onclick=Funcional(this) style="WIDTH: 30px" type=button value== DESIGNTIMESP="20075" width="30"></TD></TR></TABLE>
<SCRIPT Language="JavaScript">
txtAcumulador.value =0;
txtUltOperador.value='';
txtUltEntrada.value ='';
window.document.onkeydown = Teclado
</SCRIPT>
</body>
</html>
Comentarios sobre la versión: Versión 1 (1)