Это нормально для элемента HTML, чтобы иметь то же [имя], что и его [идентификатор]? - PullRequest
34 голосов
/ 08 ноября 2010

Я работаю над встраиванием flash-приложения в веб-страницу, используя метод Satay:

<object type="application/x-shockwave-flash" data="embeddy.swf"
<i>id="embeddy" name="embeddy"</i>>
  <param name="movie" value="embeddy.swf" />
</object>

Я хочу, чтобы flash предоставил правильный objectID в ExternalInterface.objectID, что означает, что мне нужно установить оба атрибута name и id для object.

Обычно я стараюсь избегать именования коллизий с элементами в HTML, но есть ли что-то не так с установкой обоих атрибутов на одно и то же значение в этом случае?

А как насчет HTML-форм? Кто-нибудь чувствует, что стоит установить для атрибутов name и id элемента (n) (input | select) textarea) одно и то же значение?

Ответы [ 5 ]

55 голосов
/ 08 ноября 2010

Вы используете идентификаторы для манипулирования JavaScript.

Вы используете Имена для отправки поля формы.

Оба не связаны.Таким образом, установка обоих значений одинакова, но это не обязательно.

7 голосов
/ 09 ноября 2010

Мало того, что это нормально, это довольно часто.

Идентификаторы используются для Javascript (и в меньшей степени, для CSS).

Имена используются для полей формы, чтобы указатьимя для переданного значения.

Однако в старых версиях IE есть ошибки, которые означают, что во многих случаях вы почти обязаны указывать их оба одинаково.(конечно, при условии, что вы хотите поддерживать более старые версии IE!)

Единственное, что следует иметь в виду, это то, что идентификаторы должны быть уникальными.Поэтому, если у вас есть переключатели, которые имеют одинаковое имя, вы не можете использовать один и тот же идентификатор для них всех.Тем не менее, в большинстве других случаев совершенно одинаково.

2 голосов
/ 09 ноября 2010

Да! Это абсолютно нормально.

id - идентификатор на стороне клиента (для поиска элемента в DOM)

имя используется при отправке формы для отправки / получения значений.

За пределами элемента ввода не нужно вообще использовать name . Но, предоставляя элементам ввода id , можно последовательно искать их в DOM.

1 голос
/ 10 января 2011

Я только что обнаружил HTML4 ответ на мой вопрос :

Атрибуты id и name имеют одно и то же пространство имен.Это означает, что они не могут одновременно определять привязку с одинаковым именем в одном и том же документе.Разрешено использовать оба атрибута для указания уникального идентификатора элемента для следующих элементов: A, APPLET, FORM, FRAME, IFRAME, IMG, and MAP. Когда оба атрибута используются в одном элементе, их значения должны быть идентичны.

Теперь я предполагаю, что правило, применяемое к applet и iframe, должно,по расширению, работать с тегами object и embed.В любом случае, использование идентичного имени и идентификатора не привело к необычным событиям на сегодняшний день.

1 голос
/ 09 ноября 2010

Я делаю это все время (в основном потому, что некоторые браузеры в прошлом - IE приходит на ум - используют параметр name только при отправке данных формы). Использование идентификаторов делает код проверки формы намного чище, IMO.

...