Ответ 1
Что касается спецификации HTML 4.01, вы можете использовать элементы form
с тем же атрибутом name
, поскольку на них нет требования к уникальности. Тем не менее, это наносит ущерб назначению таких атрибутов. Они предназначены для упрощения обращения к формам на клиентских сценариях: если у вас есть <form name=foo>
, то document.foo
относится к этой форме.
Это undefined что происходит, когда используется один и тот же атрибут name
, но то, что браузеры, похоже, делают, это вернуть массив. В вашем примере document.foo
будет 3-элементным массивом, причем document.foo[0]
будет первой формой. Но это не полезно, поскольку (если в документе нет других форм), вы можете использовать document.forms[0]
с четко определенным значением.
Атрибут name
устарел для form
элементов (но не для полей формы, где он продолжает оставаться существенным). Предложение HTML 4.01 spec на form
говорит:
"name
= cdata [CI] Этот атрибут называет элемент таким образом, чтобы его можно было ссылаться на таблицы стилей или скрипты. Заметка. Этот атрибут был включен для обратной совместимости. Приложения должны использовать атрибут id
для идентификации элементов."
В черновиках HTML5 даже формальные правила запрещают использование одного и того же атрибута name
. Предложение HTML5 атрибута name
на form
говорит, что его значение "должно быть уникальным среди элементов form
в коллекции forms
, что оно в, если таковые имеются" . Это сложная формулировка, но безопаснее предположить, что она должна быть уникальной в пределах элементов form
документа.