Addieren
Kutschera Michaela
- javascript
0 Dieter Raber0 Rouven0 Timo0 Der Martin1 Cheatah0 Henne
Hallo!
Ich hab ein Problem mit dem Addieren. Und zwar möchte ich, dass man in zwei Felder etwas eingeben kann und diese beiden Felder anschließend zusammen gerechnet werden.
Leider ergibt bei mir aber immer folgendes:
100+100=100100
statt richtigerweise:
100+100=200
was mache ich falsch? Kann mir jemand weiterhelfen?
DANKE und LG
Michi
Hallo Kutschera,
deine Daten werden als String verarbeitet anstatt als Integer. Abhilfe schafft entweder parseInt() oder, weniger schoen, vor der Addition mit 1 multiplizieren.
Gruß,
Dieter
Hello out there!
entweder parseInt() oder, weniger schoen, vor der Addition mit 1 multiplizieren.
Weniger schön? Aber schneller!
See ya up the road,
Gunnar
Hello,
JavaScript entnimmt Eingabefeldern immer einen String und keine Zahlen. Bei Strings wirkt der + Operator wie eine Konkatenation, also ein aneinanderfügen. Du musst JavaScript mitteilen, dass du rechnen willst, schau dir dazu die Funktion parseInt() und seinen großen Bruder parseFloat() an. Um Problemen aus dem Weg zu gehen, kannst du die Werte vorher mit isNaN prüfen.
MfG
Rouven
Leider ergibt bei mir aber immer folgendes:
100+100=100100statt richtigerweise:
100+100=200was mache ich falsch? Kann mir jemand weiterhelfen?
du hast bei der Verarbeitung in deinem Fall Strings. Wenn du zwei Strings miteinander "addierst", dann werden sie aneinander gehängt.
du musst die strings in integer oder float variablen ändern!
dies kannst du mit den funktionen
parseInt()
parseFloat()
machen.
wenn du nun addierst, sollte die richtige Lösung dabei herauskommen!
Gruß Timo
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
Hi,
Leider ergibt bei mir aber immer folgendes:
100+100=100100
na sowas. Dabei weiß doch jeder, dass 100+100=1000 ist.
Cheatah
P.S.: Es gibt 10 Sorten von Menschen: Solche, die das Binärsystem verstehen, und solche, die es nicht tun.
Grundlage für Zitat #543.
Hi,
P.S.: Es gibt 10 Sorten von Menschen: Solche, die das Binärsystem verstehen, und solche, die es nicht tun.
Es gibt manchmal freundliche und manchmal weniger freundliche Lebewesen.
mfg
Henne