HTML表单上的name
属性有什么意义?据我所知,您无法在提交时阅读表单名称或使用它执行任何其他操作。它有用吗?
答案 0 :(得分:49)
简而言之,可能过于简单化了:对于不理解id
的浏览器,使用它代替document.getElementById
。
这些天它没有任何实际意义。在使用name
来描述如何在提交表单时发送控制值并id
识别页面中的元素已解决之前,这是浏览器战争早期的遗产。< / p>
答案 1 :(得分:13)
答案 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'的风险,(因为length
是HTMLCollection
的保留属性),可以使用更简洁的表示法代替:
document.getElementById('person1').children.lastname
DOM Living Standard 2019 March 29
HTMLCollection对象是元素的集合...
namedItem(key)方法在被调用时必须运行以下步骤:
如果key为空字符串,则返回null。
返回至少满足以下条件之一的集合中的第一个元素: 它具有一个作为密钥的ID; 它在HTML命名空间中,并具有一个name属性,其值为key;