JavaScript Taschenrechner

Sack

Sigma Hydrae
ID: 232829
L
20 April 2006
5.162
320
Moin,
Ich soll für die Schule einen Taschenrechner in Javascript machen.
Plus Minus Mal und Geteilt hab ich gerade noch hinbekommen.
Wie man Quadratwurzeln macht habe ich gegoogelt.
Potenzen bekomme ich aber nicht hin.
Ich habe jetzt dieses Script:
Code:
<html>
<head><title>taschenrechner</title>

<script language=JavaScript>
<!--
    function berechnen(x,y)
    {
     var summe=parseInt(x.value)+parseInt(y.value);
     document.taschenrechner.Ausgabe.value=summe;
     }
    function sub(x,y)
    {
     var subtr=parseInt(x.value)-parseInt(y.value);
     document.taschenrechner.Ausgabe.value=subtr;
     }
    function multi(x,y)
    {
     var mult=parseInt(x.value)*parseInt(y.value);
     document.taschenrechner.Ausgabe.value=mult;
     }
    function divi(x,y)
    {
     var div=parseInt(x.value)/parseInt(y.value);
     document.taschenrechner.Ausgabe.value=div;
     }

    function wurz(ergebnis)
    {
    document.taschenrechner.Ausgabe.value = Math.sqrt( document.taschenrechner.F1.value, 2)
    }

    function pot(ergebnis)
    {
    if( isNaN(document.taschenrechner.F1.value) 
    )
    document.taschenrechner.Ausgabe.value = "Ungültige Eingabe!"
    else
    document.taschenrechner.Ausgabe.value = Math.pow( document.taschenrechner.F1.value, 2)
    }

    function Add(zeichen)
     {
     window.document.taschenrechner.F1.value =
     window.document.taschenrechner.F1.value + zeichen;
    }

    function Add2(zeichen)
     {
     window.document.taschenrechner.F2.value =
     window.document.taschenrechner.F2.value + zeichen;
    }
//-->
</script>
</head>
<body background=bg.png>

<table border=5 rules=frame align=center background=bgtable.png>
<TR>
<td colspan=10><p align=center><img src=ueb.png></p></td></tr>

<tr>
<td colspan=5><form name="taschenrechner">

<INPUT TYPE="text" NAME="F1" value="">
<p align=center><table>
<tr>
<td><INPUT TYPE="image" src="1.png" SIZE="40" onClick="Add('1')">
<INPUT TYPE="image" src="2.png" SIZE="40" onClick="Add('2')">
<INPUT TYPE="image" src="3.png" SIZE="40" onClick="Add('3')"></td></tr><tr>
<td><INPUT TYPE="image" src="4.png" SIZE="40" onClick="Add('4')">
<INPUT TYPE="image" src="5.png" SIZE="40" onClick="Add('5')">
<INPUT TYPE="image" src="6.png" SIZE="40" onClick="Add('6')"></td></tr><tr>
<td><INPUT TYPE="image" src="7.png" SIZE="40" onClick="Add('7')">
<INPUT TYPE="image" src="8.png" SIZE="40" onClick="Add('8')">
<INPUT TYPE="image" src="9.png" SIZE="40" onClick="Add('9')"></td></tr><tr>
<td><p align=center><INPUT TYPE="image" src="0.png" SIZE="40" onClick="Add('0')">
<INPUT TYPE="image" src="Punkt.png" SIZE="40" onClick="Add('.')"></p></td>
</tr>
</table></p>
<P></td><td colspan=5>

<INPUT TYPE="text" NAME="F2" value="">
<p align=center><table>
<tr>
<td><INPUT TYPE="button" VALUE="1" SIZE="40" onClick="Add2('1')">
<INPUT TYPE="button" VALUE="2" SIZE="40" onClick="Add2('2')">
<INPUT TYPE="button" VALUE="3" SIZE="40" onClick="Add2('3')"></td></tr><tr>
<td><INPUT TYPE="button" VALUE="4" SIZE="40" onClick="Add2('4')">
<INPUT TYPE="button" VALUE="5" SIZE="40" onClick="Add2('5')">
<INPUT TYPE="button" VALUE="6" SIZE="40" onClick="Add2('6')"></td></tr><tr>
<td><INPUT TYPE="button" VALUE="7" SIZE="40" onClick="Add2('7')">
<INPUT TYPE="button" VALUE="8" SIZE="40" onClick="Add2('8')">
<INPUT TYPE="button" VALUE="9" SIZE="40" onClick="Add2('9')"></td></tr><tr>
<td><p align=center><INPUT TYPE="button" VALUE="0" SIZE="40" onClick="Add2('0')"></p></td></tr>


</table></p><P></td>
</tr><TR><TD colspan=10>
<table rules=no align=center>
<TR height=50>
<TD><INPUT TYPE="button" VALUE="+" SIZE="40" onClick="berechnen(F1,F2)"></td>
<td><INPUT TYPE="button" VALUE="-" SIZE="40" onClick="sub(F1,F2)"></td>
<td><INPUT TYPE="button" VALUE="x" SIZE="40" onClick="multi(F1,F2)"></td>
<td><INPUT TYPE="button" VALUE=":" SIZE="40" onClick="divi(F1,F2)"></td>
<td><INPUT TYPE="button" VALUE="pot" SIZE="40" onClick="pot()"></td>
<td><INPUT TYPE="button" VALUE="W" SIZE="40" onClick="wurz()"></td>
</TR>
</table>


</TD></tr>
<tr><TD colspan=10><p align=center><INPUT TYPE="text" NAME="Ausgabe" SIZE="20" Value="Ergebnis"></p></td></TR>
</Table>
</form>
</body>
</html>
Wie muss es aussehen damit bei den Potenzen Feld 1 hoch Feld 2 ist, und nicht wie jetzt Feld 1 hoch 2?
Klar, das ",2" muss raus, aber wo muss ich F2 hinschreiben?

Und noch ein Fehler, der aber nur mit dem Aussehen zu tun hat:
Ich habe(wie beim vergütungspopup auf klamm) ein (2x) ein Feld mit Buttons von 1 Bis 9. Die Wollte ich jetzt ein bisschen schöner machen (in der Schule haben wir nur IE 6 und die Standard Buttons da sind mist). Also habe ich im Formular
Type="button" value="x"
mit
Type="image" src="img.png" ersetzt.
Sieht auch so aus wie es sein sollte, es passiert auch das was passieren soll, aber dann Wird der Browser refresht, so dass alles wieder auf 0 steht. Wie mache ich das richtig?

Damit ihr mich besser verstehen könnt habe ich das soweit ich bin auch nochmal hochgeladen:

In der Hofffnung, dass ihr mir (heute abend noch) helfen könnt,
Sack
 
38: document.taschenrechner.Ausgabe.value = Math.pow( document.taschenrechner.F1.value, 2)

Da steht die zwei doch fest kodiert drin. Wenn du a[sup]b[/sup] berechnen willst mußt Du
eingeben. Die fest kodierte zwei ist bei der Wurzel nur deshalb korrekt, weil du eben die Quadratwurzel berechnen willst, also die Frage beantworten: Welche Zahl muß ich zweimal mit einem Mal-Punkt dazwischen hinschreiben, daß das Produkt genau X ergibt? Du könntest auch die dritte Wurzel berechnen wollen (z.b. [sup]3[/sup]√8 = 2, denn 2*2*2 = 8)
 
Zuletzt bearbeitet:
Danke, so funktioniert es schonmal mit dem Potenzieren und wurzel ziehen.
Jetzt müsste ich nur noch wissen wie es mit dem Bild als Button richtig funktioniert, und was mir grad auch noch aufgefallen ist:
Kann man in Javascript kommazahlen verwenden? Denn wenn ich . oder , eingebe gibt der einfach ein komplett falsches Ergebnis aus...
 
Wenn du parseInt() benutzt, solltest du dich darüber nicht wundern ;)

test = parseInt("100.82") //ergibt 100 ;)

Das Int steht doch auch für Integer, beschreibt also die ganzen Zahlen..

Benutz stattdessen parseFloat() und Kommazahlen werden richtig mitgenommen ;)

Grüße
Schmitzo