Guck: Rechnen mit JavaScript

Moin,

ich habe eine Seite mit HTML und JavaScript geschrieben.
Es soll eine einfache Summe gebildet werden und das Ergebnis
ausgegeben. Jedoch gibt er mir die Zahlen in der Reihenfolge
wieder aus in der ich sie eingegeben habe.

Das Ganze in gekürzter Version:

<html>
<head>
<title>Programm</title>

<script type="text/javascript">
function Rechnen (Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6, Zahl7, Zahl8, Zahl9)
{
 var Summe = (Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6 + Zahl7 + Zahl8 + Zahl9);
 return Summe;
}

function SchreibeErgebnis (Wert1, Wert2, Wert3, Wert4, Wert5, Wert6, Wert7, Wert8, Wert9)
{
  var Wert = Rechnen(Wert1, Wert2, Wert3, Wert4, Wert5, Wert6, Wert7, Wert8, Wert9);
  document.Eingaben.BErgebnis.value = Wert;
}
</script>
</head>

<body>
<form name="Eingaben" action="">
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" width="700" align="center">
<tr><td colspan="6" width="180"><b>&nbsp; Hersteller</b></td> <td width="170"><b>Name</b></td>     <td><b>Liter</b></td>                                                                          <td><b>Flaschen</b></td>                                                               <td><b>Preis in &euro;</b></td>                                                         <td><b>Bestellung </b></td></tr>

<tr><td colspan="6" width="180">&nbsp; Reudnitzer Brauhaus     </td><td width="180">Sternburg Export       </td><td><input type="text" size="4" maxlength="3" align="right" name="L1" value="0.5"></td><td><input type="text" size="4" maxlength="2" align="right" name="KA1" value="20"></td><td><input type="text" size="4" maxlength="5" align="right" name="P1" value="6.20"> </td><td><input type="text" size="4" maxlength="2" align="right" name="B1"></td></tr>
<tr><td colspan="6" width="180">                               </td><td width="180">Reudnitzer Schwarzbier </td><td><input type="text" size="4" maxlength="3" align="right" name="L2" value="0.5"></td><td><input type="text" size="4" maxlength="2" align="right" name="KA2" value="20"></td><td><input type="text" size="4" maxlength="5" align="right" name="P2" value="9.30"> </td><td><input type="text" size="4" maxlength="2" align="right" name="B2"></td></tr>
.
.
.
<tr><td colspan="6" width="180">&nbsp;<input type="button" size="8" value="Rechne" onClick="SchreibeErgebnis(document.Eingaben.B1.value,document.Eingaben.B2.value,document.Eingaben.B3.value,document.Eingaben.B4.value,document.Eingaben.B5.value,document.Eingaben.B6.value,document.Eingaben.B7.value,document.Eingaben.B8.value,document.Eingaben.B9.value)">                               </td><td width="180">                       </td><td><input type="text" size="4" align="right" name="LErgebnis"></td> <td><input type="text" size="4" align="right" name="KAErgebnis"></td> <td><input type="text" size="4" align="right" name="PErgebnis"></td> <td><input type="text" size="4" align="right" name="BErgebnis"></td></tr>

</table>
</form>
</body>
</html>

  1. Guck,

    Jedoch gibt er mir die Zahlen in der Reihenfolge
    wieder aus in der ich sie eingegeben habe.

    Ja, so wirkt sich der "+"-Operator auf Strings aus. Die Werte von Eingabefeldern sind Strings. Wenn du die als numerische Werte brauchst, musst du sie in solche umwandeln.

    Live long and prosper,
    Gunnar

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
    1. Dank euch !!!!

      die sache hat wunderbar mit Number() funktioniert!

      DANKE !!!

  2. Hallo Guck! ;~)

    Wenn Du mit Inhalten aus Text-Inputfeldern arbeitest, werden diese intern immer als Strings behandelt. In diesem Fall erreichst Du mit dem + Operator ein Zusammenfügen der Values. Wenn Du die Werte expliziet als Integer verwenden möchtest, wandle sie mit der objektlosen Funktion Number(); in solche um.

    Also:

    var Summe = (Number(Zahl1)+ Number(Zahl2) + ...

    Achte darauf, dass Buchstaben dadurch in den entsprechenden ISO-Latin Code umgewandelt werden.

    Mit freundlichen Grüßen
    Stefano Albrecht

    1. Stefano,

      var Summe = (Number(Zahl1)+ Number(Zahl2) + ...

      Achte darauf, dass Buchstaben dadurch in den entsprechenden ISO-Latin Code umgewandelt werden.

      (1) Nö, im Firefox nicht, der gibt "NaN" zurück.

      (2) Das passiert nicht bei Verwendung von http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_float@title=parseFloat() bzw. http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int@title=parseInt().

      Live long and prosper,
      Gunnar

      --
      „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)