Ist getElementById in einigen Browsern optional? [Duplikat]

8

Beim Zugriff auf Elemente durch window.someThing sollte "someThing" der Name des HTML-Elements sein. Aber was ich jetzt sehe, ist, dass ich auf ein Element per ID auf die gleiche Weise zugreifen kann, ohne document.getElementById. Wann wurde das geändert? Es sieht so aus, als ob es in Chrome, IE, Firefox 13, aber nicht in Firefox 12 funktioniert.

Zum Beispiel:

%Vor%

Warum funktioniert das obige Beispiel? Warum muss ich nicht tun:

%Vor%

Ist es etwas Neues oder war es immer möglich und ich wusste es einfach nicht?

    
Alex Dn 21.11.2012, 12:48
quelle

4 Antworten

4

Ссылка
Es wurde (meistens) seit IE 5.5

implementiert

Ich kann wirklich keine Informationen über die Verwendung der ID als Variablennamen finden. Ich würde vorschlagen, bei getElementById("MyDiv").doSomething statt MyDiv.doSomething zu bleiben, um die Kompatibilität zu verbessern. Besonders wenn Sie größere Skripte schreiben, können Sie Variablennamen mit den auf der Seite verwendeten IDs verwechseln. getElementById stellt sicher, dass Sie das DOM-Element "bekommen".

    
Cerbrus 21.11.2012, 12:51
quelle
1

Dies ist kein Standardverhalten in JavaScript. Beim Hinzufügen einer Variablen wie in var MyDiv wurde die Variable zum Objekt window hinzugefügt, so dass direkt auf sie zugegriffen werden konnte, als wäre es eine Eigenschaft, aber DOM-Elemente wurden nie hinzugefügt. Ich kenne die Gründe für das neue Verhalten nicht persönlich, aber ich vermute, dass es nur eine Erweiterung der Fähigkeiten der Sprach-Engine ist. Wenn Sie wirklich wissen wollen, was das Verhalten sein soll, können Sie immer den Standard lesen: Ссылка

Bearbeiten: Beachten Sie auch, dass die Methode zum Abrufen des Elements document.getElementById() ist, die vom Dokumentobjektmodell stammt. Die Methode, auf die Sie sich beziehen, ist das Einfügen einer ID in das Window-Objekt, wodurch Konflikte nach ID entstehen können. Die standardmäßig definierte Methode besteht darin, das Element von document abzurufen und zu vermeiden, dass Dinge in window eingefügt werden. Die Verwendung des Objekts window auf diese Weise würde der Verwendung einer globalen Variablen ähneln (was eine schlechte Praxis ist): Ссылка )

    
Joel Etherton 21.11.2012 12:55
quelle
1

Sie können Ihre Antwort hier finden: Kann ich einen verwenden ID als Variablenname?

Kurz gesagt, vermeiden Sie es.

Der Grund dafür ist, dass der Browser tatsächlich eine Variable window.document.myDiv

erstellt     
Peter 21.11.2012 13:05
quelle
1

VERMEIDEN SIE ES!

Es scheint wie ein erstaunliches Feature, aber ich würde empfehlen, es nicht zu verwenden, denn wenn Sie divs mit identischer ID wie einige globale JS-Variablen haben, würde es widersprüchlich sein und auch Dinge in anderen JS-Dateien von Drittanbietern verfälschen dass Sie einschließen.

Aber Sie haben immer jQuery-Selektoren immer bei sich und nicht zu vergessen die neue querySelector-Funktion in modernen Browsern:)

    
Amogh Talpallikar 21.11.2012 12:59
quelle

Tags und Links