Hans35: JS rechnet nicht sondern reiht aneinander

Beitrag lesen

Hallo,

d=eval(d+document.f.elements[z].value);

wenn jetzt z.b. d=2 und document.f.elements[3].value=4 ist dann wird nicht "6" sondern "24" ausgegeben.was mache ich falsch?

Es werden Zeichenketten addiert, da Formularfelder nicht 4 sondern "4" enthalten!

Wenn d bereits ein numerischer Wert ist sollte
  d+=parseInt(document.f.elements[3].value,10);
reichen.

W e n n  ... ist genau richtig. Aber wenn nicht, wird doch wieder eine Zeichenkette draus!
Wenn nicht ganz sicher ist, dass d bereits eine Zahl enthält, dann muß es richtig heißen:
d=eval(d) + eval(document.f.elements[z].value)
Das ist immer eine Zahl als Additionsergebnis.
parseInt() ist statdessen zu nehmen, wenn d (vorher und nachher) eine Ganze Zahl (Integer) ist bzw. sein soll. (Aber Vorsicht, da wird nicht grundet, sondern die Nachkommastellen werden abgeschnitten.)

Gruß
Hans35