Jak wie każdy doświadczony programista JavaScript, istnieje wiele (zbyt wiele) sposobów na zrobienie tego samego. Na przykład załóżmy, że masz następujące pole tekstowe:
<form name="myForm">
<input type="text" name="foo" id="foo" />
Istnieje wiele sposobów uzyskania dostępu do tego w JavaScript:
[1] document.forms[0].elements[0];
[2] document.myForm.foo;
[3] document.getElementById('foo');
[4] document.getElementById('myForm').foo;
... and so on ...
Metody [1] i [3] są dobrze udokumentowane w dokumentacji Mozilla Gecko, ale żadna z nich nie jest idealna. [1] jest po prostu zbyt ogólne, aby było użyteczne, a [3] wymaga zarówno identyfikatora, jak i nazwy (zakładając, że będziesz wysyłać dane do języka po stronie serwera). Najlepiej byłoby mieć tylko atrybut id lub atrybut nazwy (posiadanie obu jest nieco zbędne, zwłaszcza jeśli identyfikator nie jest potrzebny do żadnego css i zwiększa prawdopodobieństwo literówek itp.).
[2] wydaje się być najbardziej intuicyjny i wydaje się być szeroko stosowany, ale nie widziałem odniesienia do niego w dokumentacji Gecko i martwię się zarówno o kompatybilność w przód, jak i kompatybilność z różnymi przeglądarkami (i oczywiście chcę być jak najbardziej zgodne z normami).
Więc jaka jest tutaj najlepsza praktyka? Czy ktoś może wskazać coś w dokumentacji DOM lub specyfikacji W3C, co mogłoby rozwiązać ten problem?
Uwaga Szczególnie interesuje mnie rozwiązanie niebędące biblioteką (jQuery / Prototype).