Der folgende Beitrag wurde am 30. 10. 2002, 12:55 Uhr von Martin veröffentlicht.
hallo,
ich hab folgende zeile:
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?
martin
Der folgende Beitrag wurde am 30. 10. 2002, 13:02 Uhr von Cyx23 veröffentlicht.
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?
an eval sollte es nicht liegen, also ist value wohl ein string.
Versuch mal:
d+=document.f.elements[z].value*1;
Grüsse
Cyx23
Der folgende Beitrag wurde am 30. 10. 2002, 13:08 Uhr von Martin veröffentlicht.
hi Cyx23,
danke für deinen tipp hat funktioniert
Martin
Der folgende Beitrag wurde am 30. 10. 2002, 13:06 Uhr von Thomas Meinike veröffentlicht.
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.
MfG, Thomas
Der folgende Beitrag wurde am 30. 10. 2002, 14:02 Uhr von Hans35 veröffentlicht.
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
Der folgende Beitrag wurde am 30. 10. 2002, 15:40 Uhr von Thomas Meinike veröffentlicht.
Hallo,
> 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.)
Hier wuerde ich auch eher zu solchen Formulierungen greifen:
d=parseInt(d,10) + parseInt(document.f.elements[z].value,10);
oder
d=parseFloat(d) + parseFloat(document.f.elements[z].value);
Wenn es explizite Typkonvertierungsfunktionen gibt, verwende ich diese und nicht eval(). Letzteres halte ich am ehesten bei der Zusammensetzung von Ausdruecken fuer angebracht, z. B.:
var a,b,c,d,e;
a="Math";
b="pow";
c=2;
d=4;
e=eval(a+"."+b+"("+c+","+d+")");
alert(e); // 16
Ansonsten ist eval() meistens ersetzbar oder ganz entbehrlich.
MfG, Thomas
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4