JavaScript tanfolyam

6. rész


Számológép

 
 
 
 
 

Egyre kevesebb kommentárt fűzzünk hozzá, hiszen a használt függvények ismerősek, csak erre a célra nem használtuk még őket.

Természetesen ezt a feladatot is csak űrlap segítségével lehet megoldani, ugyanis - mint azt már korábban említettük - ez azon kevés objektumok egyike, melyet mindkét böngésző segítségével át lehet írni.

A számológéphez szükséges adatbeviteli űrlapot a szép elrendezés érdekében táblázatba rendezzük. A kijelző céljait szolgáló mezőt kijelzo névre kereszteltük, hasonlóan beszédes magyar nevet adtunk minden más gombnak és függvénynek.

Táblázatunk:

<form name="Szamologep">
<table border="5" bgcolor=008080>
<td >
    <table border="1">
                <tr>
                    <td align="middle" colspan="3"><input

                    type="text" size="20" name="Kijelzo"
                    value="0" width="100%"></td>
                    <td> </td>
                    <td><input

                    type="button" value="  C  "
                    onclick="Kistorlesfuggveny()"></td>
                    <td><input

                    type="button" value="  CE " 
                    onclick="Nagytorlesfuggveny()"></td>
                </tr>
                <tr>
                    <td><input

                    type="button"  value="  7  "
                    onclick="Gombmegnyomva(7)"></td>
                    <td><input

                    type="button"  value="  8  "
                    onclick="Gombmegnyomva(8)"></td>
                    <td><input

                    type="button"  value="  9  "
                    onclick="Gombmegnyomva(9)"></td>
                    <td> </td>
                    <td><input

                    type="button"  value=" +/- "
                    onclick="Neg()"></td>
                    <td><input

                    type="button"  value="  % "
                    onclick="Szazalek()"></td>
                </tr>
                <tr>
                    <td><input

                    type="button"  value="  4  "
                    onclick="Gombmegnyomva(4)"></td>
                    <td><input

                    type="button"  value="  5  "
                    onclick="Gombmegnyomva(5)"></td>
                    <td><input

                    type="button" value="  6  "
                    onclick="Gombmegnyomva(6)"></td>
                    <td> </td>
                    <td align="middle"><input

                    type="button" value="  +  "
                    onclick="Muvelet('+')"></td>
                    <td align="middle"><input

                    type="button" value="   -   "
                    onclick="Muvelet('-')"></td>
                </tr>
                <tr>
                    <td><input

                    type="button"  value="  1  "
                    onclick="Gombmegnyomva(1)"></td>
                    <td><input

                    type="button"  value="  2  "
                    onclick="Gombmegnyomva(2)"></td>
                    <td><input

                    type="button"  value="  3  "
                    onclick="Gombmegnyomva(3)"></td>
                    <td> </td>
                    <td align="middle"><input

                    type="button"  value="  *  " 
		    onclick="Muvelet('*')"></td>
                    <td align="middle"><input

                    type="button"  value="   /   " 
                    onclick="Muvelet('/')"></td>
                </tr>
                <tr>
                    <td><input

                    type="button"  value="  0  "
                    onclick="Gombmegnyomva(0)"></td>
                    <td><input

                    type="button"  value="   .  " 
		    onclick="Tizedes()"></td>
                    <td colspan="3"> </td>
                    <td><input

                    type="button"  value="  =  "
                    onclick="Muvelet('=')"></td>
                </tr>
            </table>
            </td>
        </tr>
    </table>
</td>
  </table>
</form>

A függvények ismertetése helyett álljon itt a JavaScript program, melyben a szükséges kommentárokat magyarul olvashatjuk.

<script language="JavaScript">

<!--
    // Több függvényben használt változók
    var FSzamologep = document.Szamologep;
    var Elozo = 0;              // Elozoleg bevitt szám
    var VanUjSzam = false;   // Jelzi, hogy van-e új szám
    var FuggoMuvelet = "";           // Jelzi a függo muveletet.

    function Gombmegnyomva (Num)
    {
            if (VanUjSzam)
        {
                    FSzamologep.Kijelzo.value  = Num;
            VanUjSzam = false;
        }
        else
        {
            if (FSzamologep.Kijelzo.value == "0")
                FSzamologep.Kijelzo.value = Num;
            else
                FSzamologep.Kijelzo.value += Num;
        }
    }

    function Muvelet (Op)
    {
        var Kijelzo = FSzamologep.Kijelzo.value;
        if (VanUjSzam && FuggoMuvelet != "=");
            // A felhasználó még nem végzett, ne csimálj semmit
        else
        {
            VanUjSzam = true;
            if ( '+' == FuggoMuvelet )
                Elozo += parseFloat(Kijelzo);
            else if ( '-' == FuggoMuvelet )
                Elozo -= parseFloat(Kijelzo);
            else if ( '/' == FuggoMuvelet )
                Elozo /= parseFloat(Kijelzo);
            else if ( '*' == FuggoMuvelet )
                Elozo *= parseFloat(Kijelzo);
            else
                Elozo = parseFloat(Kijelzo);

            FSzamologep.Kijelzo.value = Elozo;
            FuggoMuvelet = Op;
        }
    }

    function Tizedes ()
    {
        var curKijelzo = FSzamologep.Kijelzo.value;

        if (VanUjSzam)
        {
            curKijelzo = "0.";
            VanUjSzam = false;
        }
        else
        {
            if (curKijelzo.indexOf(".") == -1)
                curKijelzo += ".";
        }
        FSzamologep.Kijelzo.value = curKijelzo;
    }

    function Kistorlesfuggveny ()
    {
        // Törli a legutoljára bevitt számot
        FSzamologep.Kijelzo.value = "0";
        VanUjSzam = true;
    }

    function Nagytorlesfuggveny ()
    {
        // Törli a legutoljára bevitt számot, a függö müveletet, mindent nulláz
        Elozo = 0;
        FuggoMuvelet = "";
        Kistorlesfuggveny();
    }

    function Neg ()
    {
        FSzamologep.Kijelzo.value = parseFloat(FSzamologep.Kijelzo.value) * -1;
    }

    function Szazalek ()
    {
        FSzamologep.Kijelzo.value = (parseFloat(FSzamologep.Kijelzo.value) / 100) * parseFloat(Elozo);
    }

//-->

<script>

Innen folytatjuk...