Internet Explorer, getElementById a formulářové prvky
Chtěl bych trochu doplnit Yuhůův chvályhodný příspěvek Alespoň kousek DOMu o používání
standardizovaného přístupu pomocí
Document.getElementByID, které nabízí DOM pro
získání části dokumentu a odsouvá proprietární rozšíření Document.all Internet Exploreru do
věčných lovišť.
Problém, který bych rád popsal může nastat při použití Ineternet Exploreru, document.getElementById na
dokument s formulářovými prvky. V podstatě se jedná o konflikt mezi atributem name a id, respektive pokud budeme mít
v dokumentu formulářový prvek(například input) s hodnotou atributu name, která bude shodná s hodnotou atributu id
jakéhokoliv následujícího elementu, bude volání document.getElementById vracet formulářový prvek a nikoliv
element s odpovídajícím atributem id.
Vše je možné si ověřit následujícím jednoduchém příkladu.
document.getElementById('foo').style.backgroundColor='red'
.
.
.
Formulářový prvek s atributem name="foo"
Element s atributem id="foo"Chování Internet Exploreru je samozřejmě nekorektní a může přinést pěkně horké chvilky
a opravdu špatné dohledávání chyby.
11.03.2004 Jak mě upozornil Honck(diskuse pod spotem), byl by dokument s uvedeným konfliktem id a name z hlediska HTML špatně zapsán viz . Anchors with the id attribute. Validátor ovšem takový dokument pokládá za validní.
Související články
- (28.07.2003 Dagblog) Kolekce forms a element fieldset
- (28.07.2003 Dagblog) “Hackujeme”
- getElementById korektně!
- (29.01.2004 Dagblog) Poznáváme DOM
- IV. — Procházíme dokument
Související články
Související epizody CZ Podcastu
- #217 · Ivo Lukačovič
O Windy, JavaScriptu a budování firem.
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.