Bernd: "Puffer-Variable"

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);
}

  1. 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

    --
    "Love your nation - respect the others."
    1. 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!

      1. 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

        --
        "Love your nation - respect the others."
        1. Ohne parseInt wurden die Zahlen einfach nur wie Strings aneinandergehängt.

          1. 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.

            1. Woher kommt der Link auf den Thread im Titel?

              Struppi.

              1. hmm, scheint so als ob ich das mit meinen zuckenden Fingern ein Drag and Drop ausgelöst habe ohne es zu merken.

                Struppi.

            2. 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.

          2. 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

            --
            "Love your nation - respect the others."
            1. Na gut , Chef ;-))