2013-04-13 12 views
5

Czy ktoś mógłby przejść do historii/powody, dla których interakcja z elementami formularza za pomocą NAZWA została przerwana i przejęła document.getElementById.Powód, dla którego większość form javascript używa identyfikatora zamiast NAZWA

Co dokładnie historycznie stało się przyczyną tej zmiany i zmiany.

I wreszcie, czy nastąpiła zmiana, czy nadal są zalecane sposoby robienia rzeczy?

Document.getElementById vs document.form.name 

Według niektórych dyskusji na forum dokument.form.nazwa nie jest rozpoznawany przez wszystkie przeglądarki. Czy tak jest? Zobacz:

"I've been told in the past that you should not use "document.form_name.element_name" compared to "document.getElementById()", as the first is not recognized by all browsers. " 
+0

Jaki jest faktyczny problem? "Powinieneś zadawać tylko praktyczne, odpowiedzialne pytania oparte na rzeczywistych problemach, z którymi musisz się zmierzyć." Http://stackoverflow.com/faq –

+0

Problem polega na pracy w obu kierunkach, ale dobrze byłoby wiedzieć, co jest bardziej poprawne przy pisaniu kodu. –

+0

Zinterpretowane jako konstruktywne pytanie "która z nich jest bardziej poprawna", jest to duplikat (co najmniej jednego starego pytania). –

Odpowiedz

3

Obiekt NAME niekoniecznie jest wyjątkowy. Na przykład przyciski radiowe są pogrupowane według tej samej nazwy. Wywołanie getElementByName spowoduje zwrócenie wszystkich przycisków w zestawie. ID ma być unikalny. Aby odpowiedzieć na twoje pytanie, każdy ma swoje miejsce.

+0

Ten naprawdę ma sens. Czy wiesz coś o uzyskiwaniu dostępu za pośrednictwem NAZWY nie w specyfikacjach HTML DOM, więc kod, który z niej korzysta, nie może być opisany jako zgodny ze standardami. Właśnie znalazłem http://jibbering.com/faq/notes/form-access/#faShrt, który to opisuje, chociaż nie wiem, kiedy został napisany i czy jest on nadal aktualny. Chyba że nie przeczytałem tego oświadczenia. –

1

name jest powszechnie akceptowalny, gdy jest dostępny jako document.forms[name].element[name]. Jest obsługiwany w IE 5.5, Firefox 0.8, Opera 5, Navigator 4 itd. Jest to nie na modę, ponieważ prostota jQuery sprawiła, że ​​ludzie o tym zapomnieli.

Ale jeśli element input ma taką samą nazwę jak nieruchomości na obiekcie form, to dostęp do niej może nie działać: np

<form name="hi" action="/go"><input name="action" value="world"> 

Jeżeli document.hi.action ci dać „/ przejść” lub „[wartość wejściowa = świat] "?

+0

Wygląda na to, że możesz całkowicie ujednoznacznić, używając w szczególności '.attributes', jak w' document.forms ["hi"]. Attributes ["action"]. Value' i '.elements' ' document.forms ["hi" ] .elements ["akcja"] ', a oba wydają się być zgodne ze standardami W3C. – JayC

Powiązane problemy