Должен ли атрибут 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.