Rechnen Problem mit Variable

loc_ju

Mitglied
Ich hab ein Problem mit meinem Script. Es rechnet mir im oberen teil richtig aus, aber in der 2. Funktion wird der Wert immer überschrieben nicht mit dem alten Wert addiert.

Folgender Auszug aus meinem Script:

Code:
function rechnen() { 
		var menge = document.getElementById("menge_"+id_nr).value;
		var preis = document.getElementById("preis_"+id_nr).value;
		  var menge1 = count1.replace(",",".");
          var Ausgabe_menge = parseFloat(menge1);
		  var preis1 = count2.replace(",",".");
          var Ausgabe_preis = parseFloat(preis1);
		var count_1 = Ausgabe_menge * Ausgabe_preis;
		var insert = document.getElementById("test"+id_nr).value = Ausgabe_gesamt;
		rechnen_ges(count_1); //weitergabe and funktion2
}

function rechnen_ges(neuer_wert1){
    var summe;    
    if (summe != undefined){
          
     summe = parseInt(summe + neuer_wert1);
    }else{
    summe = 0;
        summe = parseFloat(summe + neuer_wert1);
    }
    
    var insert_summe = document.getElementById("ges_ausgabe_ges1").value = summe;

}

Ich versteh nicht warum es nicht funktioniert.
Hoffe mir kann jemand helfen.

mfg
 
Ich würde gerne mehr Code posten, aber der rest hat nichts mit den beiden Funktionen zu tun.
Mir gehts lediglich darum, dass in der function rechnen_ges "summe" nicht richtig definiert wird, und bei jedem Aufruf der function rechenen_ges überschreibt es den Wert der in "summe" gespeichert ist.

Also wenn der Wert in "neuer_wert1" z.B. 10 ist, wird er in summe auch gespeichert. Sobald aber beim nächsten Aufruf der function "neuer_wert1" z.B. 15 ist, ist summe nicht 25 sondern 15.

Ich hoffe es war nun etwas verständlicher.
 
Code:
var summe;    
    if (summe != undefined){
          
     summe = parseInt(summe + neuer_wert1);
    }

Du erstellst die Variable summe und weist ihr keinen Wert zu, im nächsten Schritt prüfst du, ob sie einen wert hat. Wenn sie EINEN(!) wert hat, addierst du zu diesem Wert den übergebenen Funktionparamter. Wenn nicht, wird die summe auf null gesetzt und dann der Paramter addiert. Da wird also nichts überschreiben, sondern im prinzip nur summe = neuer_wet1 gesetzt ;)
 
Also versteh ich das richtig, summe ist nicht definiert, und weil ich dann sag

Code:
summe = 0;
        summe = parseFloat(summe + neuer_wert1);

sagt er summe = neuer_wert1
Wie kann ich dann gleich sagen dass summe eine Zahl ist, und nicht gleich als NaN ausgegeben wird?
ich hab schon
var summe = ParseFloat();
versucht aber ohne erfolg...
 
M. E. liegt der Fehler in der Funktion rechnen_ges, denn in der wird bei jedem Aufruf die Variable summe neu immer wieder neu deklariert, mit NULL vorbelegt, dann in den else-Zweig gegangen und der Wert von summe, der mit dem Statement

Code:
summe = parseFloat(summe + neuer_wert1);

erzeugt wird, an ges_ausgabe_ges1 und insert_summe übergeben.

Falls du also vorhast, irgendetwas aufzusummieren, kann das nicht klappen, weil summe lokal und nicht global definiert ist.

Setze das Statement
Code:
var summe;
in die Zeile vor
Code:
function rechnen_ges(neuer_wert1){
dann sollte es klappen.
 

Neue Beiträge

Zurück