DOM-ID's überschreiben Methoden von HTML-Objekten?
Jörg Peschke
- javascript
1 wahsaga
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
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
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.