name
属性在 HTML 表单中有何用途?据我所知,你无法在提交表单时读取表单名称,也无法使用它进行其他操作。它的作用是什么?
简而言之,可能有些过于简单化:它用于那些不理解document.getElementById
的浏览器,代替id
。
现在它已经没有真正的作用了。这是浏览器战争早期遗留下来的产物,在确定如何提交表单时使用name
描述控件值,使用id
标识页面内元素之前。
document.getElementById
,我猜我们可以跳过那些浏览器,对吗? - Wesley Murch<form>
元素本身的 name 属性。请注意不改变原意,尽可能使翻译更通俗易懂。 - gxc<form>
元素而不是<input>
元素。不同的元素对于name
属性有不同的定义。 - Quentinname
属性在HTML5中并没有被弃用。 - Knight Yoshi当你给一个元素分配了一个名称后,你可以通过 document.name_of_element
在你的代码中引用该元素。这不能用于区分同名的多个字段,但它允许使用类似如下的快捷方式:
<form name="myform" ...>
document.myform.submit();
代替
document.getElementsByName('myform')[0].submit();
window.id
,或者只使用id
,因为window
是全局的,似乎可以工作。 - user982671(来自<form>, Attributes, name)
name
表单名。在HTML 4中,它已被弃用(应使用id
代替)。在HTML 5中,它必须在文档中的所有表单中唯一且不为空字符串。
name
属性,则不适用此要求)。但我认为可以肯定的是,任何它曾经服务过的目的都已经被 id
属性取代了。small
就是其中之一,原始含义仅为大小,但现在它已经具有了语义含义,例如“小字体”。我还没有找到更多关于此事的信息,但name
属性在HTML5中可能也已被重新定义。 - Manngoname
属性与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为key; 在HTML命名空间中且具有名称属性值为key。
您可以将name属性用作“额外信息”属性 - 与隐藏输入类似 - 但这会使额外信息与表单绑定在一起,这样就更容易阅读/访问。
<form>
标签上的name
属性,而不是<form>
标签内的<input>
标签上的name
属性。 - Don Cheadle