Der Martin: Addieren

Beitrag lesen

Hallo Michi,

Leider ergibt bei mir aber immer folgendes:
100+100=100100

wenn du die Zahlen so als Anweisung im Quellcode stehen hast, sollte auch das gewünschte Ergebnis 200 rauskommen.
Dein Problem ist aber, dass die Inhalte von Formularfeldern grundsätzlich vom Typ String sind, und für Strings ist das Symbol '+' eben der Operator für die Verkettung.
Du musst also dafür sorgen, dass die Variableninhalte (ich nehme der Einfachheit halber mal a und b) als Zahlenwerte interpretiert werden. Entweder du formulierst die Umwandlung ganz explizit, oder du baust eine eigentlich sinnlose Operation mit ein, die die Umwandlung implizit erzwingt.
Beispiel:

var a = document.formular.textfeld1.value;  // z.B. "100"
  var b = document.formular.textfeld2.value;  // z.B. "100"

var c = a + b;           // ergibt "100100"
  var x = Number(a) + b;   // ergibt 200
  var y = parseInt(a) + b; // ergibt 200
  var z = a*1 + b;         // ergibt 200

In allen drei Fällen (x, y, z) erzwinge ich die Umwandlung von a in einen Zahlenwert - bei z dadurch, dass die Multiplikation eben nur für Zahlen definiert ist. Dadurch, dass *einer* der beiden Operanden dann eine Zahl ist und kein String mehr, führt der '+' Operator eine normale Addition durch.

So long,
 Martin

--
Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.
Die Zivilisation hatte begonnen.