Como qualquer desenvolvedor experiente de JavaScript sabe, existem muitas maneiras (demais) de fazer a mesma coisa. Por exemplo, digamos que você tenha um campo de texto da seguinte maneira:
<form name="myForm">
<input type="text" name="foo" id="foo" />
Há muitas maneiras de acessar isso em JavaScript:
[1] document.forms[0].elements[0];
[2] document.myForm.foo;
[3] document.getElementById('foo');
[4] document.getElementById('myForm').foo;
... and so on ...
Os métodos [1] e [3] estão bem documentados na documentação do Mozilla Gecko, mas nenhum deles é o ideal. [1] é geral demais para ser útil e [3] requer um ID e um nome (supondo que você esteja postando os dados em um idioma no servidor). Idealmente, seria melhor ter apenas um atributo id ou um nome (ter ambos é um pouco redundante, especialmente se o id não for necessário para qualquer css e aumenta a probabilidade de erros de digitação, etc.).
[2] parece ser o mais intuitivo e amplamente utilizado, mas não o vi mencionado na documentação do Gecko e estou preocupado com a compatibilidade avançada e a compatibilidade entre navegadores (e, é claro, quero ser conforme os padrões possíveis).
Então, qual é a melhor prática aqui? Alguém pode apontar para algo na documentação do DOM ou na especificação do W3C que possa resolver isso?
Observe que estou especificamente interessado em uma solução que não é de biblioteca (jQuery / Prototype).