В чем смысл атрибута name форм HTML? - PullRequest
49 голосов
/ 20 января 2012

Какой смысл атрибута name в форме HTML? Насколько я могу судить, вы не можете прочитать имя формы при отправке или сделать что-либо еще с ним. Это служит цели?

Ответы [ 6 ]

49 голосов
/ 20 января 2012

Короче говоря, и, возможно, немного упрощенно: он используется вместо id для браузеров, которые не понимают document.getElementById.

В наши дни это не служит никакой реальной цели. Унаследовано от первых дней войн браузеров до использования name, чтобы описать, как отправлять контрольные значения при отправке формы и id для идентификации элемента на странице.

13 голосов
/ 20 января 2012

От спецификация :

Атрибут name представляет имя form в коллекции forms.

5 голосов
/ 20 января 2012

После присвоения имени элементу вы можете ссылаться на этот элемент через document.name_of_element во всем коде.Не работает слишком точно, когда у вас есть несколько полей с одним и тем же именем, но он допускает ярлыки типа:

<form name="myform" ...>

document.myform.submit();

вместо

document.getElementsByName('myform')[0].submit();
2 голосов
/ 15 сентября 2017

Вот что MDN говорит об этом:

name
Название формы. В HTML 4 его использование устарело (вместо него следует использовать id). Он должен быть уникальным среди форм в документе, а не просто пустой строкой в ​​HTML 5.

(из https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-name)

Меня несколько смущает то, что она должна быть уникальной непустой строкой в ​​HTML 5, если она устарела в HTML 4. (Я полагаю, что это требование применимо, только если атрибут name указан вообще ?). Но я думаю, можно с уверенностью сказать, что любая цель, которой он когда-то служил, была заменена атрибутом id.

0 голосов
/ 31 марта 2019
Атрибут

name не является полностью избыточным по сравнению с id.Как упомянуто выше, это полезно с <forms>, но менее известно, что его также можно использовать с любым HTMLCollection, таким как свойство children любого элемента DOM.

HTMLCollection, в дополнение к объекту, подобному массиву, будет иметь именованные свойства, соизмеримые с любым именованным элементом (или первым появлением в случае неуникального имени).Полезно получить определенные именованные узлы.

Например, в следующем примере HTML:

<div id='person1'>
   <span name='firstname'>John</span>
   <span name='lastname'>Doe</span>
   <span name='middlename'></span>
</div>

<div id='person2'>
   <span name='firstname'>Jane</span>
   <span name='lastname'>Doe</span>
   <span name='middlename'></span>
</div>

, присваивая имя каждому дочернему элементу, можно быстро и эффективно извлечь именованный элемент, например, lastname, например:

document.getElementById('person1').children.namedItem('lastname')

... и если нет риска, что длина будет именем элемента-члена (если length является зарезервированным свойством HTMLCollection), более краткая запись может бытьиспользуется вместо:

document.getElementById('person1').children.lastname

Стандарт жизни DOM 2019 г. 29 марта

Объект HTMLCollection представляет собой набор элементов ...

Метод namedItem (key) при вызове должен выполнить следующие шаги:

Если ключ - пустая строка, вернуть ноль.

Вернуть первый элемент в коллекции, для которого хотя бы один изверно следующее: у него есть идентификатор, который является ключевым;он находится в пространстве имен HTML и имеет атрибут name, значением которого является ключ;

0 голосов
/ 29 марта 2014

Вы можете использовать атрибут name в качестве атрибута «дополнительная информация» - так же, как со скрытым вводом - но это сохраняет дополнительную информацию, привязанную к форме, что делает ее немного проще для чтения / доступа.

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