variable = undefined, variable[1] hat aber einen Wert
mark
- javascript
Frohe Ostern,
ich habe ein Verständnisproblem. Wie kann eine Variabe in firebug 'undefined' sein, aber Variable[1] hat einen Wert ?
Konkret arbeite ich mich gerade in die API von soundmanager2 ein. Unter
soundmanager2 basic template gibt es ein Beispiel, das ich
versuche zu verstehen. Es geht um Zeile 229 der mp3-player-button.js,
dort werden in der Variable "oLinks = document.getElementsByTagName('a');"
alle <a> - Tags gespeichert und anschließend geprüft, ob sie in soundmanager2
wiedergegeben werden können.
Setze ich einen Breakpoint in Zeile 231 ist oLinks = undefined, oLinks[1] aber gesetzt, wie kann das sein?
Ist "undefined" nicht gleichzusetzen mit die Variable hat keinen Wert zugewiesen bekommen?
lg
mark
Nachtrag :
Hab das ganze jetzt im IE debuggt und der IE liefert mir in Zeile 231 für oLinks = [Object, HTMLCollection] ... handelt es sich um einen Bug in FireBug?
Nachtrag :
Hab das ganze jetzt im IE debuggt und der IE liefert mir in Zeile 231 für oLinks = [Object, HTMLCollection] ... handelt es sich um einen Bug in FireBug?
Die Darstellungen von JavaScript-Objekten ist in sämtlichen Developer-Tools immer etwas hakelig und z.T. irreführend.
Lasse dir die Objekte als einfache Werte (Number, Boolean, String) auf der Konsole ausgeben. Durch die manuelle Serialisierung zu Strings hängt die Darstellung nicht vom jeweiligen Developer-Tool ab.
Bei einer vermeintlichen Liste z.B. ob sie einen gewissen Typ hat, ob sie truthy ist, ob sie eine length-Eigenschaft haben, sowie dessen Wert.
Bei console.debug(String(oLinks), oLinks && oLinks.length) kommt garantiert nicht undefined heraus und eine length heraus, wenn der Wert nicht tatsächlich undefined ist.
Dem Debugger nutze ich persönlich nicht so stark wie Debug-Ausgaben, weil das »Anhalten der Welt« durch Haltepunkte auf asynchrone JavaScripte das eigentliche Problem verschleiern kann.
Mathias
Om nah hoo pez nyeetz, mark!
ohne auf dein Problem eingehen zu können:
dort werden in der Variable "oLinks = document.getElementsByTagName('a');"
alle <a> - Tags gespeichert
warum heißt das wohl get_Elements_By? ;-)
Matthias