Jörg Peschke: DOM-ID's überschreiben Methoden von HTML-Objekten?

Hallo,
Mir ist gerade ein lustiges Phänomen über den Weg gelaufen, und mich würde interessieren, ob mir jemand erklären kann WARUM das folgende passiert:

Ich wollte per JavaScript-Funktion via DOM das versenden eines Formulars durchführen.
Gut, dachte ich mir, ist ja einfach:

document.getElementById("meinForm").submit();

Doch Mozilla pöbelt:
"Fehler: document.getElementById("meinForm").submit is not a function"

Bidde wie?!?
Vielleicht kann das nur der Mozilla nicht? *IE-ausprobier*
auch der nicht. *in-Selfhtml--guck* *fluch* *nochmal-guck* *Syntax-überprüf* *nochmal-guck*....

Schliesslich fand ich den Übeltäter:

<input type="submit" name="absenden" value="OK" id="submit">

Kaum hatte ich die ID auf "ButtonSubmit" geändert, ging's.

Wieso kann ich mit einer ID die Methode eines HTML-Objektes überschreiben? Hat das einen Sinn, dass ich das kann? Bug oder feature?

Verwunderte Grüße,
Jörg

  1. hi,

    Schliesslich fand ich den Übeltäter:
    <input type="submit" name="absenden" value="OK" id="submit">
    Kaum hatte ich die ID auf "ButtonSubmit" geändert, ging's.

    Das Problem gab's auch hier im Forum schon mehrmals, allerdings idR. mit name="submit".

    Wieso kann ich mit einer ID die Methode eines HTML-Objektes überschreiben? Hat das einen Sinn, dass ich das kann? Bug oder feature?

    Unter document.formularname.elementname wird dir ja immer Zugriff auf die einzelnen Formularelemente bereitgestellt - diese Objekte werden automatisch erstellt, einfach dadurch dass ein Formular vorhanden ist.
    Wenn jetzt ein Element den Namen "submit" hat, wird also automatisch document.formularname.submit als Referenz auf dieses Feld erstellt - und damit ist die submit-Methode des Formulars überschrieben worden.
    Und bei id="submit" halt analog.

    http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-75708506:
    "namedItem
    This method retrieves a Node using a name. With [HTML 4.01] documents, it first searches for a Node with a matching id attribute. If it doesn't find one, it then searches for a Node with a matching name attribute, but only on those elements that are allowed a name attribute."

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      This method retrieves a Node using a name. With [HTML 4.01] documents, it first searches for a Node with a matching id attribute. If it doesn't find one, it then searches for a Node with a matching name attribute, but only on those elements that are allowed a name attribute."

      Ah, ok, danke Dir - das machts etwas klarer. Ich dachte,
      es würden standardmäßig erstmal die Objekt-eigenen Methoden abgearbeitet und dann die ID/Name-Referenzen, wenn ein Objekt/eine Methode gesucht wird. Scheint aber genau andersrum zu sein ;)

      Man lernt doch nie aus.

      Danke jedenfalls & schönen Nachmittag.