Warum existiert die Funktion document.getElementById ()? [Duplikat]

8

Beim Erstellen von Webseiten habe ich immer die Funktion

benutzt %Vor%

, um einen Verweis auf ein Elementobjekt zu erhalten. Es wurde mir vor kurzem vorgeschlagen, dass dies nicht notwendig ist, weil es bereits eine solche Variable gibt. Der Name entspricht der ID. Ich habe es getestet und es scheint zu funktionieren.

%Vor%

Dieser Code funktioniert und es gibt "etwas Text" wie erwartet aus. Es gibt nur eine Warnung in der Firefox-Fehlerkonsole:

  

Element, das von ID / NAME im globalen Gültigkeitsbereich referenziert wird. Verwenden Sie stattdessen den WC3-Standard document.getElementById () ....

Ich benutze meistens jQuery, aber ich muss meinem Chef bei der Arbeit beweisen, oder ich muss ihm eine Schachtel Schokolade kaufen :-).

Irgendwelche Ideen, warum der obere Code nicht funktionieren sollte oder warum ist es eine sehr falsche Idee, ihn zu benutzen (Warnung im Firefox ist nicht genug) ???

Danke für Ihre Antworten

    
Voooza 18.02.2011, 14:07
quelle

3 Antworten

10
  

Irgendwelche Ideen, warum der obere Code nicht funktionieren sollte oder warum ist es eine sehr falsche Idee, ihn zu benutzen (Warnung im Firefox ist nicht genug) ???

Weil es nicht Standard ist (, aber nicht lange ). Obwohl einige Browser den globalen Variablen Elemente mit einer ID zuweisen, besteht keine Verpflichtung für sie (und nicht alle von ihnen). Ältere Versionen von Firefox zum Beispiel zeigen dieses Verhalten nicht. Es besteht auch die Gefahr, Kollisionen zu benennen .

Die Verwendung von document.getElementById() stellt sicher, dass sich alle Browser genau gleich verhalten (na ja, mehr oder weniger hust ), wenn sie ein Handle für ein Element erhalten.

Siehe bobinces ausgezeichnete Antwort zu einer ähnlichen Frage für weitere Informationen.

    
Andy E 18.02.2011 14:10
quelle
8
  

Element, auf das mit ID / NAME in verwiesen wird   globaler Geltungsbereich. Verwenden Sie den WC3-Standard   document.getElementById () statt ....

Ihr aktueller Aufruf würde zu einer möglichen variablen Kollision führen.

Stellen Sie sich das vor:

%Vor%

myID ist jetzt nicht Ihr HTML-Element, sondern eine Variable, die 'foo' enthält. Beispiel.

Sie sollten immer document.getElementById () verwenden, weil es für die spezifische Funktion erstellt wurde, HTML-Elemente und keine JavaScript-Variablen abzurufen.

    
Aron Rotteveel 18.02.2011 14:09
quelle
1

Voraussichtlich für Cross-Browser-Kompatibilität. Die zweite Version funktioniert nicht in Chrome. Was bedeutet, dass es wahrscheinlich auch in Safari scheitern würde.

    
xzyfer 18.02.2011 14:11
quelle

Tags und Links