Можно ли, чтобы элемент HTML имел то же имя [name], что и его [id]?
Я работаю над встраиванием flash-приложения в веб-страницу, используя метод Satay:
<object type="application/x-shockwave-flash" data="embeddy.swf"
id="embeddy" name="embeddy">
<param name="movie" value="embeddy.swf" />
</object>
Я хочу, чтобы флэш-память objectID
в ExternalInterface.objectID
Это означает, что мне нужно установить оба name
а также id
атрибуты для object
,
Обычно я стараюсь избегать именования коллизий с элементами в HTML, но что-то не так с установкой обоих атрибутов на одно и то же значение в этом случае?
Как насчет HTML-форм? Кто-нибудь чувствует, что стоит установить (n) (input
| select
| textarea
) элемент name
а также id
приписывает одно и то же значение?
5 ответов
Вы используете идентификаторы для манипулирования JavaScript.
Вы используете Имена для отправки поля формы.
Два не связаны. Так что установка обоих значений одинакова, но это не обязательно.
Мало того, что это хорошо, это довольно часто.
Идентификаторы используются для Javascript (и в меньшей степени для CSS).
Имена используются в полях формы для указания имени отправляемого значения.
Однако в старых версиях IE есть ошибки, которые означают, что во многих случаях вы почти обязаны указывать их оба одинаково. (конечно, если вы хотите поддерживать более старые версии IE!)
Однако следует иметь в виду, что эти идентификаторы должны быть уникальными. Поэтому, если у вас есть переключатели, которые имеют одинаковое имя, вы не можете использовать один и тот же идентификатор для них всех. Тем не менее, в большинстве других случаев совершенно нормально, чтобы они были такими же.
Ага! Это абсолютно нормально.
id - это идентификатор на стороне клиента (для поиска элемента в DOM)
имя используется при отправке формы в POST/GET значения.
За пределами элемента ввода не должно быть необходимости использовать имя вообще. Но присвоение идентификаторам входных элементов позволяет последовательно просматривать их в DOM.
Я только что нашел ответ HTML4 на мой вопрос:
Атрибуты id и name имеют одинаковое пространство имен. Это означает, что они не могут одновременно определять привязку с одинаковым именем в одном и том же документе. Разрешено использовать оба атрибута для указания уникального идентификатора элемента для следующих элементов:
A, APPLET, FORM, FRAME, IFRAME, IMG, and MAP
, Когда оба атрибута используются в одном элементе, их значения должны быть идентичны.
Теперь я предполагаю, что правило применяется к applet
а также iframe
должен, по сути, работать на object
а также embed
теги. В любом случае, использование идентичного имени и идентификатора не привело к необычным событиям на сегодняшний день.
Я делаю это все время (главным образом потому, что некоторые браузеры в прошлом - IE приходит на ум - используют параметр name только при отправке данных формы). Использование идентификаторов делает код проверки формы намного чище, IMO.