Margrit: Rechnerproblem

Hallo!

Ich habe einen Rechner erstellt, der die Anzahl mit dem Preis multipliziert und das Total ausgibt. Die Eingabe erfolgt über input Felder.
Diese Rechnung wird ein paar mal wiederholt und ist deshalb in einer for-Schleife. Am Ende möchte ich die berechneten Totals zusammenzählen. Meine Variante funktioniert nicht ganz, bei jeder Eingabe wird das bereits berechnete Ergebnis zum neu berechneten Ergenis gezählt.
Wer kann mir helfen?

Und hier das js: (var resultat sollte das Endergebnis werden, die function dp ist nur zur Formatierung)

function compute(){

var c = 3;
 var c2 = ((document.calcform.elements.length -10) /4) -6;
 var c3 = ((document.calcform.elements.length -10) /4) -4;
 var c4 = document.calcform.elements.length -6;

for (i = 0 ; i < ((document.calcform.elements.length - 10) / 4); i ++) {

var menge = document.calcform.elements[c];
   c = c * 3  + c2 ;

var anzahl = document.calcform.elements[c];
   c ++;

var preis = document.calcform.elements[c];
   c ++;

var total = document.calcform.elements[c];

anzahl.value = menge.value;
   total.value = dp(anzahl.value * preis.value);

var result = document.calcform.elements[c4];
   result.value =(parseFloat(result.value)) + (parseFloat(total.value)) ;
   result.value = dp(result.value);

c = (c - c3) / 3 + 1;

}
}

  1. Hi,

    Und hier das js: (var resultat sollte das Endergebnis werden,
    die function dp ist nur zur Formatierung)

    ein paar Tips zur Vorgehensweise allgemein:

    Du vermengst Berechnung und Darstellung. Ich empfehle Dir, während
    der Berechnung die ganze Formatierungs-Geschichte zu ignorieren.
    Die Funktion "compute" sollte ausschließlich mit Zahlen arbeiten,
    also weder selbst etwas formatieren noch auf ParseFloat angewiesen
    sein (letzteres könnte eventuell problematisch sein, betrachte es
    also als weniger wichtig). Dann wird Dein Code sehr viel kürzer
    und übersichtlicher.

    Baue "alert()"-Aufrufe in Deinen Code ein, welcher Dir den aktuellen
    Stand der entscheidenden Variable in jedem Schleifendurchgang zeigt.
    Dann siehst Du wahrscheinlich sofort, welchen Denkfehler Du begangen
    hast (ich vermute, Du hast eine Operation innerhalb der Schleife, die
    nach außerhalb gehört, oder die Initalisierung einer Variablen ver-
    gessen).

    Fehlersuche hat viel mit methodischem Vorgehen zu tun. Das muß man
    separat erlernen - die Kenntnis der Programmiersprache alleine löst
    nicht alle Probleme.

    Viel Erfolg bei der Suche
         Michael