"Puffer-Variable"
Bernd
- javascript
Hallo!
Bei einem best. Event wird jedesmal die Funktion "singleSum" aufgerufen, die eine Zahl kalkuliert und ausgibt.
Zum Schluß soll die Summe aller dieser Funktionsaufrufe herauskommen. Leider ist die Variable nach jedem Funktionsaufruf wieder leer und behält nur den letzten Wert im Speicher. Was mache ich falsch?
Vielen Dank!!
function singleSum(zahl1,zahl2) {
// hier wird kaluliert und dann ausgegeben
// ...code...
document.getElementById('erg').value = erg;
// hier wird eine neue Funktion aufgerufen, die alles, was oben durchlief addieren soll
totalSum(erg);
}
function totalSum (erg) {
var sumTotal = sumTotal + erg;
alert(sumTotal);
}
Moin!
Leider ist die Variable nach jedem Funktionsaufruf wieder leer und behält nur den letzten Wert im Speicher. Was mache ich falsch?
Du definierst sumTotal als lokale Variable der Funktion.
function totalSum (erg) {
var sumTotal = sumTotal + erg;
alert(sumTotal);
}
- Sven Rautenberg
OK, sie ist nun global.
var sumTotal = parseInt(0); // außerhalb einer jeden Funktion
function calcTotal (erg) {
sumTotal += eval(erg);
alert(sumTotal);
}
Damit haut´s hin.
Danke!
Moin!
var sumTotal = parseInt(0); // außerhalb einer jeden Funktion
function calcTotal (erg) {
sumTotal += eval(erg);
alert(sumTotal);
}Damit haut´s hin.
Naja, bis auf den total sinnlosen Einsatz von parseInt(0) bei der Initialisierung und den total sinnlosen Einsatz von eval() (da hätte, sofern nötig, parseInt(erg,10) hingehört) bei der Addition ist der Code tatsächlich marginal besser geworden ("+="-Operator genutzt).
Siehe http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int, insbesondere das "Beachten Sie".
- Sven Rautenberg
Ohne parseInt wurden die Zahlen einfach nur wie Strings aneinandergehängt.
Ohne parseInt wurden die Zahlen einfach nur wie Strings aneinandergehängt.
Du hast gelesen auf welches parseInt() Sven sich bezieht und wo bei dir ein parseInt() fehlt?
Struppi.
Woher kommt der Link auf den Thread im Titel?
Struppi.
hmm, scheint so als ob ich das mit meinen zuckenden Fingern ein Drag and Drop ausgelöst habe ohne es zu merken.
Struppi.
Schon kapiert! Ich hatte das parseInt zuerst tatsächlich i.d. Funktion. Ergebnis war schlecht. Deswegen der Versuch mit Eval. Immer noch schlecht. Dann die Kombination aus beidem. Ergebnis gut.
Was mich wundert: warum korrgiert Ihr nicht den Betreff? Denn das "Ding" heißt ja gar nicht "Puffervariable" ;-))
Damit soll´s dann aber auch gut sein für heute. Danke & schönes WE noch.
Moin!
Ohne parseInt wurden die Zahlen einfach nur wie Strings aneinandergehängt.
Wirf das eval() raus, ersetze es durch parseInt(... ,10) (die Angabe der Zahlenbasis erspart dir, dass parseInt plötzlich Hex- oder Oktalzahlen erkennt).
Und parseInt(0) ist wirklich überflüssig, weil 0 schon eine Zahl ist, parseInt ändert daran absolut nichts.
- Sven Rautenberg
Na gut , Chef ;-))