Javascript kalkulator

Javascript je jedan od najpopularnih programskih jezika s kojim je moguće napraviti puno sa relativno malo koda. U ovom primjeru vidimo kako u javascript-u možemo napraviti jednostavni kalkulator bez upotrebe dodatnih fremeworka. Kako kalkulator radi pogledajte na demo stranici

U html dijelu izradimo tablicu u kojoj se nalaze gumbi brojeva i matematičkih operatora, a korisnik upisuje vrijednosti u text box klikom ma određeni gumb. Prilikom klika na button u u onclik event-u pozivamo funkciju u kojoj se šalje vrijednost value (this.value) tj. vrijednost označena na gumbu. Klikom na gumb c vrijednost u textbox-u postavljamo na nula i bool variablu resrart postavljamo na true

Variablom var t = document.getElementById("i1");  selektiramo text box i1 te zatim čitamo vrijednost textboxa-a sa t.value. Kada korisnik klikne na gumb jednako  (izračun dobivamo pomoču naredbe eval) pozivamo  funkciju jednako 

function jednako() {

            var r1 = t.value.replace('×', '*').replace('÷', '/')

            t.value = eval(r1)             //restart = true        

}



<!DOCTYPE html>
<html>

<head>
    <title>Kalkulator javascript</title>

    <style>
        .it {
            width: 225px;
            font-size: 16px;
            padding: 5px;
            text-align: right;
        }

        .iw {
            width: 55px;
            height: 55px;
            font-size: 25px;
        }
    </style>
</head>

<body>


    <h1>Kalkulator</h1>
    <p></p>
    <table>
        <tr>
            <td colspan="4"><input class="it" type="text" value="0" id="i1"></td>
        </tr>

        <tr>
            <td><input type="button" class="iw" value="c" onclick="c()"></td>
            <td><input type="button" class="iw" value="" onclick="l()"></td>
            <td><input type="button" class="iw" value="" onclick="l()"></td>
            <td><input type="button" class="iw" value="÷" onclick="l(this.value)"></td>
        </tr>

        <tr>
            <td><input type="button" class="iw" value="7" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="8" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="9" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="×" onclick="l(this.value)"></td>
        </tr>
        <tr>
            <td><input type="button" class="iw" value="4" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="5" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="6" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="-" onclick="l(this.value)"></td>
        </tr>
        <tr>
            <td><input type="button" class="iw" value="1" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="2" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="3" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="+" onclick="l(this.value)"></td>
        </tr>
        <tr>
            <td><input type="button" class="iw" value="±" onclick="p()"></td>
            <td><input type="button" class="iw" value="0" onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="." onclick="l(this.value)"></td>
            <td><input type="button" class="iw" value="=" onclick="jednako()"></td>
        </tr>

    </table>


    <script>

        var restart = true
        var t = document.getElementById("i1");

        function l(c) {
            if (restart == true) {
                t.value = c
                restart = false
            }
            else { t.value += c }
        }
        function jednako() {
            var r1 = t.value.replace('×', '*').replace('÷', '/')
            t.value = eval(r1)
            //restart = true
        }
        function c() {
            t.value = '0'
            restart = true
        }
        function p() {
            if (!t.value.startsWith('-')) {
                t.value = '-' + t.value
            }
        }

    </script>
</body>

</html>