Frank Bergermann: Mehrer Werte innerhalb einer Tabelle zusammenzählen?

Beitrag lesen

Die Formularfelder sind alle Strings und müssen vor Berechnungen und Vergleichen zu Zahlen umgewandelt werden!
Dafür habe ich eine funktion num(string) geschrieben.
Beispiel-Quelltext:

<html>
<head>
<script type="text/javascript">
<!--
function berechnung()
{
  var form=document.form1
  form.produkt1.value = num(form.stueck1.value) * num(form.preis1.value)
  form.produkt2.value = num(form.stueck2.value) * num(form.preis2.value)
  form.gesamt.value = num(form.produkt1.value) + num(form.produkt2.value)
}
// Zahlenfelder:
function num(string,ganzzahl) // Wandelt einen String in eine Zahl um
 // Parameter ganzzahl kann weggelassen werden. Sonst wenn true: ganze Zahlen erzeugen
{
 string = string.replace(",",".") // Komma zu Punkt umwandeln. Wenn . selbst ersetzt werden soll, evtl. mit . maskieren, da der . ein RegExp-Steuerzeichen ist.
 var zahl = parseFloat(string)  // String zu Zahl, sonst ist z. B. "10" < "2". Buchstaben nach der Zahl werden ignoriert. Kann NaN zurückliefern, z. B. bei leerem String "" oder wenn er mit Buchstaben anfängt, z. B. "a1".
 if( isNaN(zahl) ) zahl=0
 if(ganzzahl) zahl=Math.round(zahl)
 return zahl
 // Wichtig: Wenn Feldinhalt vom Rückgabewert abweicht, dann Feldinhalt durch Rückgabewert ersetzen
 // Aber nicht bei Live-Umwandlung per onkeyup im Formelement, sonst werden Dezimaltrenner, Nachkommastellen und Nachkommanullen abgeschnitten.
}
//-->
</script>
</head>
<body>
<form name=form1>
Stück:
<input name=stueck1 size=8>
Preis:
<input name=preis1 size=8>
Produkt:
<input name=produkt1>
<BR>
Stück:
<input name=stueck2 size=8>
Preis:
<input name=preis2 size=8>
Produkt:
<input name=produkt2>
<BR>
<BR>
<input type=button onclick=berechnung() value="Berechnen" style="background-color:#00FF00">
Summe:
<input name=gesamt><BR>
</form>
Weitere Formularfunktionen:<BR>
<a href=http://www.bitwelt.de/javascript/formulare/pflichtfelder.htm target=_blank>www.bitwelt.de/javascript/formulare/pflichtfelder.htm</a>
</body>
</html>