JavaScript Taschenrechner



  • Hallo zusammen,
    ich beschäftige mich grade bisschen mit JavaScript und hab von meinem Ausbilder die Aufgabe bekommen nen Kleinen taschenrechner zu programmieren.

    Hab 5 formularelemente,
    1. Zahl, Operator, 2. Zahl, Ergebnis und einen Resetbutton.

    Hab mich dafür entschieden die Operator auswahl per switch/case zu steuern.
    Nur leider funktioniert das ganz nicht so wie ich will, ich mal der Code.

    <!--
    function grechnen(){
    var zahl1 = document.getElementsByName("zahl1")[0].value;
    var zahl2 = document.getElementsByName("zahl2")[0].value;
    var oper = document.getElementsByName("operator")[0].value;	
    zahl1 *= 1;
    zahl2 *= 1;			
    
    	switch(oper){
    		case '+':
    			erg = zahl1 + zahl2;
    		case '-':
    			erg = zahl1 - zahl2;
    		case '*':
    			erg = zahl2 * zahl2;
    		case '/':
    			erg = zahl1 / zahl2;
    
    		}
    
    document.getElementsByName("ergebnis")[0].value = erg;
    }
    -->
    </script>
    </head>
    <body>
    <h2>Grundrechnen:</h2>
    <form name="trechner">
    <table width="" border="1" cellpadding="0" cellspacing="0" align="center">
    <tr>
    <td><input type="text" name="zahl1" size="30" value="0" onchange="java\1:grechnen()"></td>
    <td><select name="operator" size="1" onchange="java\1:grechnen()">
    <option>+</option>
    <option>-</option>
    <option>*</option>
    <option>/</option>
    </select></td>
    <td><input type="text" name="zahl2" size="30" value="0" onchange="java\1:grechnen()"></td>
    <td><input type="text" name="ergebnis" size="30" value="Ergebnis" readonly></td>
    <br>
    </tr>
    <tr>
    <td>
    <input type="reset" value="Neu" align="center">	
    </td>	
    </tr>
    </table>
    </form>
    

    Das Problem ist jetzt das immer die letzte Möglichkeit im Switch ausgewählt wird, also in meinem Fall wird immer Zahl1 und Zahl2 geteilt.

    Und ich komm absolut nicht drauf voran es liegt. Hoff mir kann hier jemand helfen.

    Grüße
    bethebe



  • switch(oper){
            case "+":
                erg = zahl1 + zahl2;
                break;
            case "-":
                erg = zahl1 - zahl2;
                break;
            case "*":
                erg = zahl2 * zahl2;
                break;
            case "/":
                erg = zahl1 / zahl2;
                break;
            default: fehler
            }
    

    Try



  • Achja, da hätt ich auch drauf kommen können.
    Danke für den Tipp.



  • Müsste das nicht auch gehen?

    function grechnen(){
    document.getElementsByName("ergebnis")[0].value = eval(document.getElementsByName("zahl1")[0].value+document.getElementsByName("operator")[0].value+document.getElementsByName("zahl2")[0].value); 
    }
    

  • Mod

    Javascripter schrieb:

    Müsste das nicht auch gehen?

    function grechnen(){
    document.getElementsByName("ergebnis")[0].value = eval(document.getElementsByName("zahl1")[0].value+document.getElementsByName("operator")[0].value+document.getElementsByName("zahl2")[0].value); 
    }
    

    Das tut aber etwas ganz anderes als du erwartest. Wenn ich naemlich alert("hallo") in das eine textfeld schreibe, dann wird das ausgegeben.

    If eval() is the answer, you’re almost certainly asking the wrong question.



  • Dann überprüfst du halt vorher noch die Gültigkeit des Inhalts. Das muss bei der anderen Version ja auch gemacht werden.


  • Mod

    Javascripter schrieb:

    Dann überprüfst du halt vorher noch die Gültigkeit des Inhalts. Das muss bei der anderen Version ja auch gemacht werden.

    If eval() is the answer, you’re almost certainly asking the wrong question.


Anmelden zum Antworten