HTML表单`name`属性有什么意义?

时间:2012-01-20 18:44:59

标签: html forms

HTML表单上的name属性有什么意义?据我所知,您无法在提交时阅读表单名称或使用它执行任何其他操作。它有用吗?

6 个答案:

答案 0 :(得分:49)

简而言之,可能过于简单化了:对于不理解id的浏览器,使用它代替document.getElementById

这些天它没有任何实际意义。在使用name来描述如何在提交表单时发送控制值并id识别页面中的元素已解决之前,这是浏览器战争早期的遗产。< / p>

答案 1 :(得分:13)

来自the spec

  

name属性代表forms集合中的form名称。

答案 2 :(得分:5)

为元素指定名称后,您可以在整个代码中通过document.name_of_element引用该元素。当你有多个相同名称的字段时,它们也不起作用,但它确实允许使用以下快捷方式:

<form name="myform" ...>

document.myform.submit();

而不是

document.getElementsByName('myform')[0].submit();

答案 3 :(得分:2)

以下是MDN对此的评价:

  

<强> name
  表格的名称。在HTML 4中,不推荐使用它(应该使用id代替)。它必须在文档中的表单中是唯一的,而不仅仅是HTML 5中的空字符串。

(来自https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-name

我发现它有点令人困惑,指出在HTML 5中不推荐使用时,它必须是HTML 5中唯一的非空字符串。(我猜这个要求仅适用于name属性是否指定?)。但我认为可以安全地说,曾经服务过的任何目的都被id属性所取代。

答案 4 :(得分:0)

您可以将name属性用作“额外信息”属性 - 与隐藏输入类似 - 但这会将额外信息保存在表单中,这使得读取/访问更加简单。

答案 5 :(得分:0)

name相比,

id属性并非完全多余。如前所述,它对<forms>很有用,但鲜为人知的是它也可以与任何HTMLCollection(例如任何DOM元素的children属性)一起使用。

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'的风险,(因为lengthHTMLCollection的保留属性),可以使用更简洁的表示法代替:

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

DOM Living Standard 2019 March 29

  

HTMLCollection对象是元素的集合...

     

namedItem(key)方法在被调用时必须运行以下步骤:

     

如果key为空字符串,则返回null。

     

返回至少满足以下条件之一的集合中的第一个元素:       它具有一个作为密钥的ID;       它在HTML命名空间中,并具有一个name属性,其值为key;