Wenn das Argument von eval bzw. parseInt führende Nullen hat, kommt es zu sonderbaren Ergebnissen:
die sind nicht sonderbar sondern absolut korrekt
eval('07') und parseInt('07') liefern die Zahl 7 -
wie erwartet.
völlig richtig
Bei eval('08') bekommt man 8 , parseInt('08')
liefert jedoch 0...
auch richtig, gibt es eigentlich nämlich gar nicht
Und wenn eval('010') bzw. parseInt('010') ausgeführt wird, sind sie sich wieder einig und liefern 8 (!) zurück...selbst eval('010*2') liefert konsequent 16.
auch richtig
Das geschieht sowohl bei IE als auch bei Netscape.
sieha da, die beiden zankhähne sind sich doch nicht etwa einig
Weiß jemand, wie man den Fehler umschiffen kann ?
Es ist kein Fehler, sondern eine Funktion.
Die vorangestellte null signalisiert den Funktionen, dass Du NICHT mit Dezimalzahlen arbeitest, sondern mit Oktalzahlen. Ich hoffe du weißt, was das ist.
Also was ist passiert:
07 = 7 absolut richtig
08 != 8 da hier der Überschlag erfolgen sollte mit:
010 = 8 nach der 7 kommt die 8 .....
2*8 = 16 sollte soweit richtig sein
wie kommst du der sache bei:
mit eval() fällt mir nix ein,
aber parseInt(Ausdruck,radix) kennt ein 2. Argument, den radix. Wenn du hier 10 eingibst müsste es wieder klappen(aus Zeitmangel nicht getestet.
Sieh mal hier nach
http://www.teamone.de/selfhtml/sfausles/tsfa_tca.htm#a10
Bye Ed X