typecast? string zu integer?
thecreep
- javascript
0 Der Martin0 Novi0 Don P
Hi,
hab grad ein kleines Problem, finde aber keine Lösung. Folgender Code vorweg fürs Verständnis:
var id = document.getElementById("viewdata").innerHTML;
id= id.substr(5);
id=(id+dx);
alert(id+" dx:"+dx);
Nach dem substr-Aufruf steht in id nur noch eine Zahl, dx ist auch eine Zahl.
Das addieren läuft allerdings falsch, da id immernoch als string behandelt wird bekomme ich
leider z.B. "15-1 dx:-1" oder z.B. "151 dx:1" raus.
Wie kann ich bewirken, dass id als Zahl behandelt wird?
MfG
thecreep
Hallo,
var id = document.getElementById("viewdata").innerHTML;
id= id.substr(5);
id=(id+dx);
alert(id+" dx:"+dx);
> Nach dem substr-Aufruf steht in id nur noch eine Zahl
nein, hier liegt dein Trugschluss: Nach dem substr()-Aufruf ist id immer noch ein String - auch wenn er ausschließlich Zeichen enthält, die als Zahl interpretierbar sind.
> Das addieren läuft allerdings falsch, da id immernoch als string behandelt wird bekomme ich leider z.B. "15-1 dx:-1" oder z.B. "151 dx:1" raus.
Klar, beide Operanden werden als Strings verkettet.
> Wie kann ich bewirken, dass id als Zahl behandelt wird?
Du kannst die Umwandlung in eine Zahl erzwingen, indem du eine Operation durchführst, die nur für Zahlenwerte definiert ist - zum Beispiel 0 subtrahieren oder mit 1 multiplizieren.
Ciao,
Martin
--
Man sollte immer wissen was man sagt
- aber auf keinen Fall alles sagen, was man weiß.
Nach dem substr-Aufruf steht in id nur noch eine Zahl
nein, hier liegt dein Trugschluss: Nach dem substr()-Aufruf ist id immer noch ein String - auch wenn er ausschließlich Zeichen enthält, die als Zahl interpretierbar sind.
Da hab ich mich schlecht ausgedrückt, ich meinte das id nur noch eine Zahl beinhaltet :)
Jetzt gehts einwandfrei, Danke
MfG
thecreep
@@thecreep:
nuqneH
nein, hier liegt dein Trugschluss: Nach dem substr()-Aufruf ist id immer noch ein String - auch wenn er ausschließlich Zeichen enthält, die als Zahl interpretierbar sind.
Da hab ich mich schlecht ausgedrückt, ich meinte das id nur noch eine Zahl beinhaltet :)
Immer noch. Du meintest, dass (der String) id nur noch Ziffern beinhaltet.
Qapla'
Hi,
Da hab ich mich schlecht ausgedrückt, ich meinte das id nur noch eine Zahl beinhaltet :)
Immer noch. Du meintest, dass (der String) id nur noch Ziffern beinhaltet.
Du meintest, daß der String id nur noch Ziffern enthält
cu,
Andreas
Hallo,
Da hab ich mich schlecht ausgedrückt, ich meinte das id nur noch eine Zahl beinhaltet :)
Immer noch. Du meintest, dass (der String) id nur noch Ziffern beinhaltet.Du meintest, daß der String id nur noch Ziffern enthält
...oder dass er sie beinhält.
Gruß, Don P
Hallo,
der Link spricht für sich selbst:
http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int@title=parse_int
Viele Grüße Novi
Hallo,
Das addieren läuft allerdings falsch, da id immernoch als string behandelt wird bekomme ich
leider z.B. "15-1 dx:-1" oder z.B. "151 dx:1" raus.
parseInt
ist gut und recht, kommt auch mit Hex- und Oktalzahlen zurecht und mit Stings wie "123xy" (ergibt 123), oft wird auch empfohlen 0 zu addieren, aber die einfachste Methode ist immer noch der Plus-Operator: +str
konvertiert str zu einer Zahl, in deinem Fall also +id + (+dx)
(Klammerung nur zur Sicherheit, damit beim Komprimieren nicht aus Versehen ++dx enststeht, was etwas anderes wäre).
Die ECMAScript-Spezifikation sagt:
11.4.6 Unary + Operator
The unary + operator converts its operand to Number type.
The production UnaryExpression : + UnaryExpression is evaluated as follows:
- Evaluate UnaryExpression.
- Call GetValue(Result(1)).
- Call ToNumber(Result(2)).
- Return Result(3).
In Punkt 3 ist die Konvertierung zur Zahl mit ToNumber() vorgeschrieben, und so geschieht es auch.
Gruß, Don P