Inicio Apuntes FPApuntes DAWCalculadora básica con JavaScript

Calculadora básica con JavaScript

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

El siguiente ejercicio es el típico ejercicio que todos los que hemos tenido que aprender JavaScript tuvimos que escribir en su momento. En este blog ya hemos tratado como hacer un calculadora con Java, y la verdad es que no podía faltar su versión de la calculadora JavaScript. Con el ejemplo que a continuación veremos, se trabajará el ejercicio con funciones pasando valores y escribiendo texto gracias a ellas.

Para darle un estilo básico a la calculadora, esto lo haremos mediante unas pocas reglas CSS3. Maquetaremos los botones y los resultados utilizando HTML5.

Para el que necesite echar un vistazo al ejercicio funcionando, puede echar un vistazo en el siguiente enlace.

Calculadora JavaScript

La anterior captura de pantalla es lo que se va a poder ver en pantalla cuando se utilice el siguiente código. Tan solo son unas cuantas líneas sencillas, pero muy útiles de este maravilloso lenguaje de programación.

Calculadora JavaScript

Dentro de la etiqueta head vamos a pegar estos estilos. Aun que lo suyo es meterlos dentro de otro archivo, pero no tengo tiempo.

<style>

    #borde{border:1px solid #000;
           max-width: 300px !important;
           padding:1%;
           text-align: center;
           margin-left: auto;
           margin-right: auto;
    }    

    input[type="button"]:hover{

        background-color:slategray;

        cursor: pointer;

    }

    input[type="button"].arit{

        background-color:maroon;

    }

    input[type="button"].igual{

        background-color: #c200e0;

    }

    input[type="button"].limpiar{

        background-color:orangered;

    }

    form{

        background-color:white;
        text-align: center;

    }

    input[type="text"]{

        background-color:black;

        border:0px;

        width:250px;

        height: 40px;

        font-size: 20px;

        color: white;

        text-align: right;

        pointer-events: none;

    }

    input[name="txtcaja1"]{

        height: 20px;

        font-size: 18px;

        padding-right: 2%;

    }

    input[name="txtcaja2"]{

        margin-bottom: 10px;

        font-size: 26px;

        padding-right: 2%;

    }

    input[type="button"]{

        font-size: 18px;

        font-weight:lighter;

        font-family: Arial, "DejaVu Sans", "Trebuchet MS", Verdana, "sans-serif";

        width:60px;border:0px;

        height: 60px;

        color: white;

        background-color:#007fff;

        margin-bottom: 5px;

        }

    body{

        background-color:#f1f1f1;

    }

</style>

Ahora dentro del body, vamos a añadir el siguiente código:

<div id="borde">
 
<h2>Calculadora Básica con JavaScript</h2>
 
<form name="f1"><br/>
 
<input type="text" name="txtcaja1"/><br/>
 
<input type="text" name="txtcaja2" value="0"/><br/>
 
<input type="button" class="limpiar" onClick="document.f1.reset();" value="C"/>
 
<input type="button" class="limpiar" onClick="document.f1.txtcaja2.value='0'" value="CE"/>
 
<input type="button" class="arit" onClick="masmenos()" value="±"/> <input type="button" class="arit" onClick="arit('%')" value="%"/><br/>
 
<input type="button" onClick="escribir('7')" value="7"/>
 
<input type="button" onClick="escribir('8')" value="8"/>
 
<input type="button" onClick="escribir('9')" value="9"/> 

<input type="button" class="arit" onclick="arit('/')" value="÷"/><br/>
 
<input type="button" onclick="escribir('4')" value="4"/>
 
<input type="button" onclick="escribir('5')" value="5"/>
 
<input type="button" onclick="escribir('6')" value="6"/> 

<input type="button" class="arit" onclick="arit('*')" value="×"/><br/>
 
<input type="button" onClick="escribir('1')" value="1"/>
 
<input type="button" onClick="escribir('2')" value="2"/>
 
<input type="button" onClick="escribir('3')" value="3"/> 

<input type="button" class="arit" onclick="arit('-')" value="-"/><br/>
 
<input type="button" onClick="escribir('0')" value="0"/>
 
<input type="button" onClick="escribir('.')" value="."/>
 
<input type="button" class="igual" onclick="calcular()" value="="/> 

<input type="button" class="arit" onclick="arit('+')" value="+"/><br/>
 
</form>
</div>

Justo antes del cierre de la etiqueta form, vamos a añadir el siguiente javascript:

 /*Función para escribir los números en las cajas de texto*/
 
    function escribir(n){
 
        var caja2 = document.f1.txtcaja2.value;
 
        if (caja2=="0" && n!="."){
 
            cajao=caja2.replace("0", "")
 
            document.f1.txtcaja2.value = cajao + n;
 
        }
 
        else{
 
            document.f1.txtcaja2.value = caja2 + n;
 
        }
 
    }
 
    function arit(o){
 
        var caja1 = document.f1.txtcaja1.value;
 
        var caja2 = document.f1.txtcaja2.value;
 
        if (caja1=="" && caja2!=""){
 
            document.f1.txtcaja1.value = caja2 + o;
 
            document.f1.txtcaja2.value="";
 
        }
 
        else if(caja2!=""){
 
            document.f1.txtcaja1.value = caja1 + caja2 + o;
 
            document.f1.txtcaja2.value="";
 
        }
 
    }
 
    function calcular(){
 
        var caja1 = document.f1.txtcaja1.value;
 
        var caja2 = document.f1.txtcaja2.value;
 
        document.f1.txtcaja2.value = eval(caja1 + caja2);
 
        document.f1.txtcaja1.value="";
 
    }
 
    /*Función para cambiar el signo de los números*/
 
    function masmenos(){
 
        var caja2 = document.f1.txtcaja2.value;
 
        if (caja2 > ){
 
            document.f1.txtcaja2.value= "(-" + caja2 + ")";
 
        }
 
        else{
 
            cajaplus = caja2.replace(/[-|(|)]/g, "");
 
            document.f1.txtcaja2.value = cajaplus;
 
        }
 
    }

Ni que decir tiene que este es solo un ejercicio básico, y que no se puede modificar el código junto con sus CSS para darle una aspecto más bonito, al gusto del usuario. Quién quiera puede trabajar mucho más y mejorar de manera notable. Pero para quien lo necesite este me parece un buen punto de partida para empezar a trabajar con JavaScript.

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Resumen de privacidad
cookies entreunosyceros

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible.

La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal de ningún tipo.

Tienes toda la información sobre privacidad, derechos legales y cookies en nuestra página sobre la política de privacidad o en la página sobre nuestra política de cookies.

Cookies necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza las siguientes cookies adicionales:

- Mailchimp: Recordar si ya estás suscrito al boletín de noticias y sino ofrecértelo al salir.

- Accesibilidad: Para saber tus ajustes de accesibilidad en cada visita.

- Comentarios: Saber si has leído y aceptado nuestra política de privacidad a la hora de dejar un comentario en la web.

- Google Analytics: Localización para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

- Goggle Adsense: Anuncios personalizados según tu geolocalización y preferencias.

Dejar estas cookies activadas nos permite mejorar nuestra web.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.