Untertschied getElementsbyID und getElementsbyTag
Tom.Bombadil
- javascript
Hallo,
wenn ich versuche ein HTML-Objekt (in meinem Fall ein <iframe>) anzusprechen, dann habe ich dzu ja mehrere Möglichkeiten.
1. window.frames["meinIFRAME"]
2. document.all.getElementsById("meinIFRAMEID")
3. document.all.getElementsByTag("meinIFRAMEID")
1. und 2. scheinen das selbe Objekt zurückzugeben. Ein Objekt, wie es in der SELFHTML Doku beschrieben ist. In diesem Fall hat das Frameobjekt nur eine Eigenschaft length.
Wenn ich ich die 3. Methode verwende habe ich plötzlich Zugriff auf das style-Objekt von meinem IFRAME, und das length Attribut ist unbekannt.
Meine Frage:
Sind die Zugriffe irgendwie beabsichtigt so unterschiedlich, oder ist das nur so eine Version-veralteterKRAM-Browserkrieg-Microsoft-Geschichte?
Warum gibt es diese verschiedenen Möglichkeiten?
Wie fügen die Zugriffe sich in den DOM-Baum?
Vielen Dank
Gruß
Tom
document.all ist eine MicroSoft-Erweiterung für das DOM des MSIE. Verwende lieber document.getElementById oder document.getElementsByTagName, in der jeweils angemessenen Form.
Gruß, LX
Hi!
document.all ist eine MicroSoft-Erweiterung für das DOM des MSIE. Verwende lieber document.getElementById oder document.getElementsByTagName, in der jeweils angemessenen Form.
Womit LX Dir mitteilen wollte, dass die Methode getElementById
heißt - ohne 's'.
off:PP
Mahlzeit Tom.Bombadil,
wenn ich versuche ein HTML-Objekt (in meinem Fall ein <iframe>) anzusprechen, dann habe ich dzu ja mehrere Möglichkeiten.
- window.frames["meinIFRAME"]
- document.all.getElementsById("meinIFRAMEID")
Falsch: http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id@title=document.getElementById() - ohne "all" und ohne "s"
- document.all.getElementsByTag("meinIFRAMEID")
Falsch: http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name@title=document.getElementsByName() - ohne "all"
Sind die Zugriffe irgendwie beabsichtigt so unterschiedlich, oder ist das nur so eine Version-veralteterKRAM-Browserkrieg-Microsoft-Geschichte?
Ja, nein.
Warum gibt es diese verschiedenen Möglichkeiten?
Weil sie unterschiedliche Ergebnisse zurückliefern: getElementById() liefert GENAU EIN Element zurück - dasjenige mit der ID, die Du als Parameter angibst. Da eine ID dokumentweit eindeutig sein muss, kann es maximal ein Element mit dieser ID geben - und das bekommst Du zurück. getElementsByName hingegen liefert ein Array mit allen Elementen, die den von Dir als Parameter übergebenen Namen besitzen, zurück. Ein Name muss nicht eindeutig sein, also können auch mehrere Elemente mit dem gleichen Namen existieren.
MfG,
EKKi
Hi!
Korrekt. Nur wollte er nicht byName sondern byTagName (denke ich). Das von Ekki geschriebene gilt aber analog hierzu.
getElementsByTagName("myframeid") ist uebrigens ziemlicher Unsin. Damit sucht man nach Tags nicht nach IDs. Man bekommt also mit getElementsByTagName("p") alle <p>'s. Das ist ein ziemlicher Unterschied zu getElementById() ...