Должен ли атрибут name быть уникальным в HTML-документе?
Я помню, что читал в спецификации один раз, что оба и name
атрибут имеет одно и то же пространство имен и должен быть уникальным. Отныне я всегда старался выполнить это требование в своих заявках, боясь даже дать то же самое id
и name
к тому же элементу.
но в последнее время я начал работать с ASP.NET MVC 3, и он (как и PHP) может использовать то же самое name
атрибут на нескольких входных элементах управления для формирования коллекции значений на серверный. Я попытался найти соответствующий раздел в спецификации-но не смог его найти. Возможно, я что-то неправильно понял или прочитал неправильную документацию?
как же тогда? Я хочу создать как можно более корректный HTML (как 4.01, так и 5 в разных приложениях). Могу ли я использовать этот трюк без страха? Или я нарушаю что-то и должен лучше придерживаться уникальных ценностей?
3 ответа:
The
name
атрибут действителен только на<form>
и форма элементов (<input>
,<textarea>
и<select>
). Он используется для указанияname
для связывания с парой имя / значение, которая представлена в записи формы.например:
<input type="checkbox" name="foo" value="1" />
если проверено отправит
foo=1
. В DOM вы можете ссылаться на элементы формы изform.elements
коллекция, указавname
как индекс. Еслиname
не является уникальным, коллекция возвращает массив элементы, а не сам элемент. Поддержка современный дом смотрит элементов формы на имя:document.getElementsByName(nameValue)
Примечание: он всегда возвращает массив, даже если найден только один элемент.
id
атрибут из XML-мира и является уникальным идентификатором для любого узла, а не только для элементов формы. В отличие отname
атрибут действителен на любом HTML узле. Также как иname
атрибут, он должен следовать правилам допустимого идентификатора. Идентификатор должен начинаться с альфа, и только содержит альфа - ([a-zA-Z]
), цифры, дефис, подчеркивание и двоеточия (Примечание ASP.NET нарушает это правило, начиная зарезервированные идентификаторы с подчеркивания - таким образом, они всегда будут терпеть неудачу в HTML/XML lint - на самом деле некоторые прокси лишают их). Чтобы найти любой элемент HTML поid
вы используете:document.getElementById(idvalue)
это возвращает только один узел DOM.