Keine getElementById für den Körper?

Diese Frage hat mich gestört, für eine lange Zeit. Sorry wenn es eine dumme Frage.

Vor, ich habe gewusst, dass Sie können die Elemente mit einem Klassennamen

document.body.getElementsByClassName("foo");

Und ich war so faul, so dass ich nur kopiert und eingefügt, den code zu, der andere Teil dies zu tun

document.body.getElementById("bar");

Ich zufällig gefunden, es wird nicht funktionieren. Ich habe das getestet und es sagt

TypeError: Object #<HTMLBodyElement> hat keine Methode "getElementById'

So, warum es getElementsByClassName undgetElementsByTagName und alle, die ähnliche Methoden, aber nur keine getElementById?

typeof document === typeof document.body   //true

Ihre Typen sind die gleichen, so sollten Sie die gleiche Sache. Aber es scheint nicht der Fall zu sein.

typeof ist "object" für beide, das heißt, Sie können auf jeden Art der Objekte. Es sagt Ihnen nicht viel über die Methoden, die Sie haben.
"Die Typen sind die gleichen, so sollten Sie die gleiche Sache." Nein. Sie sind sowohl Objekte, aber nicht alle Objekte teilen sich die gleichen Eigenschaften/Methoden.
Empfehlung, nie check-Typen in javascript zu sehen, wenn Dinge sind die gleichen, Durchlaufen Sie die Eigenschaften und überprüfen Sie Sie. Da typeof document === typeof document.body === typeof null === typeof [] === "object"

InformationsquelleAutor Derek 朕會功夫 | 2012-06-27

Schreibe einen Kommentar