Rechnen in JS

Hey,

ich muss ein “Taschenrechner” machen, mit 3 Eingabefeldern…2 für die Zahlen zum addieren und 1 für das Ergebnis…

Bin jetzt soweit gekommen:

[code]

+
[/code]

Funktioniert aber leider nicht :frowning: vielleicht kann mir jemand helfen :smiley:

Grüße

Probiers mal so :wink:

<html>
<head>
 <script language="javascript">
  <!--
  function rechne()
  {
   var zahl1, zahl2, ergebnis;
   zahl1 = parseInt(document. getElementById('rechner').z1.value);
   zahl2 = parseInt(document. getElementById('rechner').z2.value);
   ergebnis = zahl1 + zahl2;
   document. getElementById('rechner').e.value = ergebnis;
  }
  // -->
 </script>
</head>
<body>
 <form id="rechner">
  <input type="text" value="" name="z1" onchange="rechne();">+
  <input type="text" value="" name="z2" onchange="rechne();">
  <input type="text" value="" name="e">
 </form>
</body>
</html>

ich finde es mit onchange schöner, aber der Button geht natürlich auch :wink:

huhu,

hab jetzt mal noch ein bisschen rumgespielt^^

leider klappt das noch nicht so wie ich will :neutral_face:

ich hab jetzt 3 eingabefelder in zwei die zahlen und in dem anderen das zeichen…

wenn ich jetzt 1 + 1 in die felder eingebe kommt 1+1 raus^^

woran leiegt das?

[code]

=
[/code]

grüße

Das liegt daran, dass du aus den 3 Textfeldern einen String machst.
Du musst den Rechenoperator per if abfangen und die Rechnung entsprechend durchführen.
Mit variablem Rechenoperator verwandelst du das ganze in eine Zeichenkette und nichts wird gerechnet.

Du hast die Klammern falsch verwendet :wink:
Außerdem sollte die Rechenfunktion ja auch ausgeführt werden - das macht man mit eval();

So müsste es klappen (ungetestet):ergebnis = eval(parseInt(zahl1) + zeichen + parseInt(zahl2));-> de.selfhtml.org/javascript/objek … g.htm#eval

Hey,

so das klappt schon mal…

jetzt habe ich es so gemacht, dass wenn ich kein Rechenzeichen ausgebe ein alert kommt…

aber ich möchte dies auch wenn keine zahl eingetragen ist.

[code]

=
[/code]

hab schon versucht

if (zeichen!="+" && zeichen!="-" && zeichen!="*" && zeichen!="/" && zahl1=" " && zahl2=" " )geht aber leider nicht^^

grüße und danke :wink2:

Oder:if (zeichen!="+" && zeichen!="-" && zeichen!="*" && zeichen!="/" || zahl1=="" || zahl2=="" )

hey,

geht auch nicht :neutral_face:

grüße

keiner mehr ne antwort?

helft mir doch mal :frowning:

musst du dafür nicht “else” benutzen

-> de.selfhtml.org/javascript/objek … #parse_int
Das sollte weiterhelfen…

Zuerst prüfst Du, ob Zahl1 überhaupt einen Eintrag enthält ( != “” ) und danach, ob dieser Eintrag eine Zahl ist (parseInt).

du kannst das auch einfach mit eval umsetzen:

var rechnung = "3+5*7";
var ergebnis = eval(rechnung);

Wir sind schon etwas weiter…

[quote=„Spandauer007“]jetzt habe ich es so gemacht, dass wenn ich kein Rechenzeichen ausgebe ein alert kommt…
aber ich möchte dies auch wenn keine zahl eingetragen ist.[/quote]
:smiley:

ich würds wie Microsoft machen:

alert("Error 0x"+random(10000000, 99999999));

:ps:

Hier mal ein Rechner der auch Klammerrechnung beherrscht auf der
Basis von eval():

<html>
<head>
</head>
<body>
<p>Formel z.B. (34.5-5)*5.4 eingeben und = klicken</p>
<form>
  <input type="text" size="30" value="" name="z1" onchange="this.parentNode.e.value = eval(this.value);"> =
  <input type="text" value="" name="e">
</form>
</body>
</html>

Schonmal frohe Ostern :wink2: