Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-09-2005, 17:12   #1 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
NAN und doch typeof -> number

Hallo FF,

hab hier ein seltsamen Problem.
Über XML les ich mir ein paar Daten in Flash.
Alles schön und gut.
Aber dann:
ActionScript:
  1. var1 = Products.childNodes[i].childNodes[j].firstChild;
  2. trace(var1); // Ausgabe: 576
  3. trace(typeof(var1)); // Ausgabe: Object
  4. var2 = Number(var1);
  5. trace(var2); //Ausgabe: NAN
  6. trace(typeof(var2)); //Ausgabe: number
  7.  

Mach ich denn hier nen Fehler oder was ist hier los ?
Hoffe mit kann hier jemand helfen !!

Danke

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 13-09-2005, 17:16   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Warum da nun bei typeof Number rauskommt weiß ich nicht. Aber so sollte es zumindest klappen:
ActionScript:
  1. var var1 = "576 "
  2. trace(var1); // Ausgabe: 576
  3. trace(typeof(var1)); // Ausgabe: Object
  4. var2 = parseInt(var1);
  5. trace(var2); //Ausgabe (wahrscheinlich): 576
  6. trace(typeof(var2)); //Ausgabe: number
  7.  
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (13-09-2005 um 17:27 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 13-09-2005, 17:50   #3 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
Okay, vielen Dank, das funktioniert.

Finds aber schon sehr sehr seltsam das ganze ...
Vielleicht kanns mir dann doch noch mal einer erklären.

Hier nochmal ein Script zum nachvollziehen, damit mir keiner vorwerfen kann, ich hätte da was in der XML falsch gemacht ..... (oder vielleicht eben doch genau da)
ActionScript:
  1. s="<?xml version='1.0' encoding='UTF-8' ?>";
  2. s+="<Main>";
  3. s+="<SUB>123</SUB>";
  4. s+="</Main>";
  5.  
  6. myXML=new XML(s);
  7. var1 = myXML.firstChild.firstChild.firstChild;
  8. trace(var1);
  9. trace(typeof(var1));
  10. var2 = Number(var1);
  11. trace(var2);
  12. trace(typeof(var2));
DANKE

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 13-09-2005, 18:05   #4 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
Und hab da selbst nen Denkfehler entdeckt .... wobei der mir noch nicht ganz erklärt, warum ich ein Object nicht in eine Number konvertieren kann...

Mit:
var1 = myXML.firstChild.firstChild.firstChild;
erhalte ich den Node, welches aber ein Objekt ist.

Mit:
var1 = myXML.firstChild.firstChild.firstChild.nodeValue;
erhalte ich den Wert des Nodes, welcher ein String ist und dann auch ohne Probleme als Number(var1) konvertiert werden kann.

Number(Object) scheint wohl nicht zu funktionieren ....

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 13-09-2005, 18:49   #5 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
'Number(objekt)' funktioniert genauso wenig wie 'Number(array)'.
Number ist ein sog. 'primitver' Datentyp, während Object/Array 'komplexe' Datentypen sind.

Und, der Vollständigkeit halber:
childNodes sind Instanzen der Klasse 'XMLNode'
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 13-09-2005, 19:17   #6 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
Danke für die Erklärung!
Zitat:
Number ist ein sog. 'primitver' Datentyp, während Object/Array 'komplexe' Datentypen sind.
Das hast du mir erst kürzlich schon erklärt (Da gings um Kopie oder Referenz auf Objekt)
Aber das erklärt ja nicht, dass ich nicht einen 'komplexen' Datentypen in einen 'primitiven' Datentypen umwandeln könnte ....
...siehe array.toString()...
da gehts doch auch ?!

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 13-09-2005, 21:10   #7 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ich würde mal sagen (ohne es 100%ig genau zu wissen)...
'toString()' ist eine Methode, die Klassen wie Array oder XML extra implementiert haben (mit return-Wert und so), während Number() eine simple ("primitive") Form der Datenkonvertierung ist...
Also in deinem Fall hättest du auch
ActionScript:
  1. Number(myXML.firstChild.firstChild.firstChild.toString());
schreiben können.
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 13-09-2005, 22:11   #8 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
ActionScript:
  1. s = "<?xml version='1.0' encoding='UTF-8' ?>";
  2. s += "<Main>";
  3. s += "<SUB>123</SUB>";
  4. s += "</Main>";
  5.  
  6. var myXML = new XML(s);
  7. var var1 = myXML.firstChild.firstChild.firstChild;
  8. trace(var1);// 123
  9. trace(typeof (var1)); // object
  10. trace(var1 instanceof XMLNode); //true
  11.  
  12.  
  13. var var2 = myXML.firstChild.firstChild.firstChild.nodeValue;
  14. trace(var2); // 123
  15. trace(typeof (var2)); //string
  16. trace(var2 instanceof XMLNode); //false
  17.  
  18. var var3 = Number(var2);
  19. trace(var3); //123
  20. trace(typeof (var3)); //number
  21.  
entweder es hilft oder es verwirrt dich noch mehr.

trace(typeof(Nan)) gab schon immer number zurück

Geändert von michael (13-09-2005 um 22:13 Uhr)
michael ist offline   Mit Zitat antworten
Alt 13-09-2005, 23:29   #9 (permalink)
...
 
Benutzerbild von flash bier
 
Registriert seit: Nov 2001
Beiträge: 1.227
Zitat:
trace(typeof(Nan)) gab schon immer number zurück

Alles klar.....
.... schwarz ist ja auch ne Farbe !

Danke an alle !

MfG flash bier
__________________
Schweig oder sprich Worte, die besser sind als Schweigen !
flash bier ist offline   Mit Zitat antworten
Alt 14-09-2005, 00:12   #10 (permalink)
robo kalkühl
Gast
 
Beiträge: n/a
Zitat:
Zitat von michael
trace(typeof(Nan)) gab schon immer number zurück
gibt es nicht extra "zahlen" die NAN, unendlich und minus unendlich repräsentieren?

..ich könnt jetzt eigentlich nochmal in meinen unterlagen kramen, habe aber eigentlich keinen bock


edith:
na, ging halt fix, ist allerdings java, aber ich denke mal, das passt auch ähnlich für as:
Zitat:
Zitat von java in a nutshell
die typen float und double besitzen spezielle werte, die als ergebniss bestimmter fließkommaoperationen auftreten können: plus unendlich, minus unendlich, minus null, und "keine zahl" (not a number, nan).
[..]
fließkommaarithmetik führt niemals zu einer exception, selbst wenn durch null dividiert wird
(dann kommt halt nan raus)
so, ich denke mal das dadurch alle klarheiten beseitigt sind...

Geändert von robo kalkühl (14-09-2005 um 00:20 Uhr)
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele