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?
Es wurde (meistens) seit IE 5.5
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".
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): Ссылка )
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
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:)
Tags und Links javascript html