Tom.Bombadil: Untertschied getElementsbyID und getElementsbyTag

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

  1. 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

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. Mahlzeit Tom.Bombadil,

    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")

    Falsch: http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id@title=document.getElementById() - ohne "all" und ohne "s"

    1. 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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 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() ...

      --
      Trau Dich!