Addition in Javascript

devconproductions

Grünschnabel
Ich weiß das ich hier eigenltich eine sehr lapidare Frage stelle aber hier stellt sich mir ein merkwürdiges Problem.

Habe folgende Funktion:
Code:
function berechnungsumme(betrageins,betragzwei)
{ 
		
  var summe= betrageins + betragzwei;
  document.payform.summe.value=summe;

}

Aufgerufen wird sie hierrüber:

Code:
<input type="text" name="summe" onmouseover="berechnungsumme(document.payform.mwst7.value,document.payform.mwst16.value)" readonly="readonly" >

Ich übergebe hier einmal den Wert der Berechnung von 7% und 16% Mehrwertsteuer, diese werden auch ordnungsgemäß übergeben das Ergebnis ist aber nicht richtig.

Wenn man z.B. den Wert 7 und 16 hat sollte nach der Addition im Feld summe 23 rauskommen da kommt aber 716 raus, wenn man aber die Funktion so ändert das multipliziert werden soll dann kommt das richtige Ergebnis 112 raus, bei der Addition werden also einfach die Zahlen aneinandergereiht. Das verstehe ich nicht wieso eine Multiplikation geht und eine Addition nicht?
 
Ein leidiges Thema bei Javascript: Der Verkettungsoperator von Zeichenketten ist der gleiche wie der Additionsoperator von Zahlen und Javascript gibt der Verkettung vorang. Es wandelt also bei Additionen alle Zahlen in Strings um, sobald einer der zu addierende Operanden vom Datentyp Zeichenkette ist.
Code:
alert("1" + 2 + 3 + 4);
ergibt also "1234" und nicht 10, weil das ganze als Zeichenkette aufgefasst wird und alert("Eins"+"Zwei"+"Drei"+"Vier") auch "EinsZweiDreiVier" ergeben würde. Die Zahlen sind also für Javascript Zeichen und keine Zahlen. Bei der Multiplikation ist der Operator, das Mal, eindeutig nur für Zahlen und deswegen versucht Javascript alle Operanden auch vorher in Zahlen zu konvertieren. Ist ne blöde Sache, aber da kann man nichts machen.

Lösung: Bei solchen Fehlern musst du den/die betreffenden Operanden expliziet per Number() oder parseInt() in Zahlen umwandeln. Beispiel:
Code:
alert(Number("1") + 2 + 3 + 4);
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück