Rechnerproblem
Margrit
- javascript
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;
}
}
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