Como cualquier desarrollador experimentado de JavaScript sabe, hay muchas (demasiadas) formas de hacer lo mismo. Por ejemplo, supongamos que tiene un campo de texto de la siguiente manera:
<form name="myForm">
<input type="text" name="foo" id="foo" />
Hay muchas formas de acceder a esto en JavaScript:
[1] document.forms[0].elements[0];
[2] document.myForm.foo;
[3] document.getElementById('foo');
[4] document.getElementById('myForm').foo;
... and so on ...
Los métodos [1] y [3] están bien documentados en la documentación de Mozilla Gecko, pero ninguno es ideal. [1] es demasiado general para ser útil y [3] requiere una identificación y un nombre (suponiendo que publicará los datos en un idioma del lado del servidor). Idealmente, sería mejor tener solo un atributo de identificación o un atributo de nombre (tener ambos es algo redundante, especialmente si la identificación no es necesaria para ningún CSS, y aumenta la probabilidad de errores tipográficos, etc.).
[2] parece ser el más intuitivo y parece ser ampliamente utilizado, pero no lo he visto mencionado en la documentación de Gecko y estoy preocupado por la compatibilidad directa y la compatibilidad entre navegadores (y, por supuesto, quiero ser lo más compatible posible con los estándares).
Entonces, ¿cuál es la mejor práctica aquí? ¿Alguien puede señalar algo en la documentación DOM o en la especificación W3C que pueda resolver esto?
Tenga en cuenta que estoy específicamente interesado en una solución que no sea de biblioteca (jQuery / Prototype).