Рекомендация. Доступ к элементам формы по идентификатору HTML или атрибуту имени? - PullRequest
121 голосов
/ 12 марта 2010

Как знает любой опытный разработчик JavaScript, существует много (слишком много) способов сделать то же самое. Например, скажем, у вас есть текстовое поле следующим образом:

<form name="myForm">  
    <input type="text" name="foo" id="foo" />

Существует множество способов получить доступ к этому в JavaScript:

[1]  document.forms[0].elements[0];
[2]  document.myForm.foo;
[3]  document.getElementById('foo');
[4]  document.getElementById('myForm').foo;
     ... and so on ...

Методы [1] и [3] хорошо документированы в документации Mozilla Gecko, но ни один из них не идеален. [1] является слишком общим, чтобы быть полезным, а [3] требует и идентификатор, и имя (при условии, что вы будете публиковать данные на языке сервера). В идеале было бы лучше иметь только атрибут id или атрибут name (если оба они являются в некоторой степени избыточными, особенно если идентификатор не нужен для какого-либо css и увеличивает вероятность опечаток и т. Д.) .

[2] кажется наиболее интуитивно понятным и широко используемым, но я не видел, чтобы на него ссылались в документации Gecko, и меня беспокоит как прямая совместимость, так и кросс-браузерная совместимость (и, конечно, я быть максимально совместимым со стандартами).

Так что же лучше здесь делать? Может кто-нибудь указать на что-то в документации DOM или спецификации W3C, что может решить эту проблему?

Примечание. Меня особенно интересует небиблиотечное решение (jQuery / Prototype).

Ответы [ 11 ]

0 голосов
/ 12 марта 2010

Форма 2 в порядке, также рекомендуется форма 3.
Избыточность между name и id вызвана необходимостью сохранения совместимости, в html 5 некоторые элементы (такие как img, form, iframe и т. Д.) Потеряют свой атрибут «name», и рекомендуется использовать только их id для ссылки на них с этого момента на:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...