| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
| problem mit 'for ... in' und 'push' bei childNodes abfragung
Hallo! Habe folgendes Skript umgeschrieben: Code: _root['subarr'+i] = [];
for (k in this.firstChild.childNodes[i].attributes) {
_root['subarr'+i].push(this.firstChild.childNodes[i].attributes[k]);
} Code: if (this.childNodes[i].childNodes[7].hasChildNodes()) {
for (b=7; b<this.childNodes[i].childNodes.length; b++) {
for (k in this.childNodes[i].childNodes[b].childNodes[0].childNodes) {
_root['subarr'+i].push(this.childNodes[i].childNodes[b].childNodes[0].childNodes);
}
}
} Kann mir jemand erklären wo ich da den logischen unterschied habe? |
| | |
| | #2 (permalink) |
| _//\\#//\\_ Registriert seit: Jan 2003
Beiträge: 7.060
| PHP-Code: ![]() PHP-Code: |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
|
jaja, schon klar. aber das skript ist noch viel grösser. ich hab da ein menü hergenommen, ich glaube sogar eins von dir (dyn-menue.swf), und da sind sooooo viele variablen nicht definiert bevor sie gebraucht werden und alles irgendwie durcheinander (erst ganz unten definiert, gar nicht definiert, etc.), da ist glaub ich das k an sich auch egal. ich häng mal das skript mit an, das ich da jetzt für mich programmiert hab. ausserdem hab ich jetzt auch rausgefunden, dass er eh was reinspeichert, aber nur das letzte von den childNodes, die anderen vergisst/überspeichert er wieder. Geändert von Shousté (09-08-2007 um 14:17 Uhr) |
| | |
| | #4 (permalink) | |
| _//\\#//\\_ Registriert seit: Jan 2003
Beiträge: 7.060
| Zitat:
![]() wir reden aber von verschiedenen sachen. lies mein letztes posting nochmal genau. | |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
|
ich weiß schon was du meinst, abert es funktioniert auch so nicht: Code: if (this.childNodes[i].childNodes[7].hasChildNodes()) {
for (b=7; b<this.childNodes[i].childNodes.length; b++) {
for (k in this.childNodes[i].childNodes[b].childNodes[0].childNodes[k]) {
_root['subarr'+i].push(m.childNodes[i].childNodes[b].childNodes[0].childNodes[k]);
}
}
} ich hab da schon 100 verschiedene sachen ausprobiert. funktioniert aber alles nicht. was macht den die for...in-schleife überhaupt genau? is die sowas wie die foreach-schleife, oder? und wo liegt der logische unterschied zwischen for...in und push? |
| | |
| | #6 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
| PHP-Code: Wie warrantmaster schon sagte ist dort nur einmal ein k, und zwar im Schleifenkopf und dann nutzt du es nicht. Vielleicht meinst du es so: PHP-Code: Und das hier geht schon einmal gar nicht... for (k in this.childNodes[i].childNodes[b].childNodes[0].childNodes[k]) Geändert von rendner[i] (10-08-2007 um 07:44 Uhr) |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
|
okay, ich glaube, ich brauche einen befehl, der genau das selbe macht wie der for...in ... ,also alle childNodes in das Array _root['subarr'+1] rein speichert. es funktioniert ja schon, nur eben mit dem als letztes reingespeicherten objekt. dieses objekt weiß aber auch schon wo es hin muss. schaut euch bitte die datei an, das entsprechende beginnt ab zeile 138. vl is es dann klarer, was mein problem ist.
Geändert von Shousté (10-08-2007 um 08:51 Uhr) |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
|
bin jetzt schon "weiter" gekommen, nun weiß ich: er traced mir zwar die arrays gleich, aber im debugger sehen die objekte folgendermaßen aus: meins: Variable _level0.subarr4 = [Objekt #67, Klasse 'Array'] [ 0:[Objekt #68, Klasse 'Array'] [ 0:[Objekt #69, Klasse 'XMLNode'] { X-Tention News } ], 1:[Objekt #70, Klasse 'Array'] [ 0:[Objekt #71, Klasse 'XMLNode'] { X-Tention Observer } ] ] funktionierendes von warrantmaster: Variable _level0.subarr6 = [Objekt #36, Klasse 'Array'] [ 0:"google", 1:"ebay", 2:"amazon", 3:"google2", 4:"lycos", 5:"amazon", 6:"google1", 7:"ebay1" ] mein gott, stinkt das ganze! könnt ihr mir nicht weiter helfen?? LG |
| | |
| | #9 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.138
|
Was willst du denn nun machen? Attribute auslesen? Arrays speichern? Denn am Anfang willst du noch an die Attribute.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
|
so, gerade die eigentliche fehlerquelle entdeckt: genau, der fehler ist: in der vorgabedatei werden attribute angesprochen. ich muss aber nodes ansprechen. wenn ich die xml umschreibe auf attribute und die fla anpasse dann funktionierts. also, meine letzte fragekorrektur: ich muss mehr oder weniger die nodes in attribute bekommen, darf aber die XML nicht verändern. geht das? bzw. muss das ganze script irgendwie so hinbiegen, dass es auch nodes akzeptiert. Danke für deine Hilfe, wenn du die Lösung weißt, und ich dich jemals treffe, spendier ich dir eine Limo |
| | |
| | #12 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.138
|
Also, das ist so: du speicherst die Referenzen auf die childNodes in dem Array. Ich weiss ja nicht, ob du auch selbst programmierst, aber das arbeiten auf eine XML als Datenhaltung mehr als unüblich. Speicher lieber gleich die Werte in einem Array. Wenn das nicht geht oder für dich zu abstrakt ist, dann kannst du es so machen: ActionScript:
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
|
also die XML programmiert mir ein CMS heraus, dass kann ich nicht ändern, das ist ja auch der grösste s****ß. die Nodes ansich kann ich ja schon einlesen, und auch richtig tracen (also so wie in dem beispiel von warrentmaster), der Array wird in der swf falsch ausgegeben. wenn ich es mit attributen mache, dann funktioniert das ganze einwandfrei nur indem ich den letzten knotenpunkt durch .attributes.name ersetze. ich häng nochmal die nicht funktionierende version an, damit du den unterschied siehst (ab Zeile 230 bzw. die xml) |
| | |
| | #14 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.138
|
Also wenn's nun läuft, dann ist ja alles gut. Ich würde aber etwas mehr Struktur vorschlagen...
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Jul 2007
Beiträge: 49
|
neinneinnein ... ich kann ja die xml nicht verändern, weil die mir automatisch generiert wird. das was ich da verändert habe, war nur 1 output des CMS, aber ich muss es so hinbringen, dass die nodes angesprochen werden und die ganze sache in der swf richtig dagestellt wird, weil das funktioniert eben nicht, was mit attributen schon funktioniert. vl hilft dir der output vom debugger ein bisschen mehr: attribute: Variable _level0.subarr6 = [Objekt #36, Klasse 'Array'] [ 0:"google", 1:"ebay", 2:"amazon", 3:"google2", 4:"lycos", 5:"amazon", 6:"google1", 7:"ebay1" ] nodes: Variable _level0.subarr4 = [Objekt #67, Klasse 'Array'] [ 0:[Objekt #68, Klasse 'Array'] [ 0:[Objekt #69, Klasse 'XMLNode'] { X-Tention News } ], 1:[Objekt #70, Klasse 'Array'] [ 0:[Objekt #71, Klasse 'XMLNode'] { X-Tention Observer } ] ] wobei eben der array über trace(); gleich ausgegeben wird. ja, strukturmäßig muss ich noch viel ausbessern, aber wenn man immer dort und da was hinzubastelt und dort weg, dann verliert man schnell mal ein bisschen organisation. Geändert von Shousté (22-08-2007 um 09:24 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |