【发布时间】:2012-02-15 07:24:00
【问题描述】:
HTML 表单上的name 属性有什么意义?据我所知,您无法在提交时阅读表单名称或对其进行任何其他操作。它是否有目的?
【问题讨论】:
-
我花了一段时间才意识到您只是想知道
<form>标记上的name属性,而不是<form>内<input>标记上的name属性
HTML 表单上的name 属性有什么意义?据我所知,您无法在提交时阅读表单名称或对其进行任何其他操作。它是否有目的?
【问题讨论】:
<form> 标记上的name 属性,而不是<form> 内<input> 标记上的name 属性
简而言之,可能有点过于简单化了:它被用于不理解 document.getElementById 的浏览器而不是 id。
如今,它没有任何实际用途。这是浏览器战争早期的遗留问题,在使用name 描述如何在提交表单时发送控制值和使用id 识别页面内的元素之前已经解决了。
【讨论】:
document.getElementById.. 我想我们可以跳过那些,对吧?
<form> 元素本身的 name 属性。
<form> 元素而不是 <input> 元素。不同元素的 name 属性定义不同。
name 属性在 HTML5 中不被弃用。
name属性表示form在forms集合中的名称。
【讨论】:
id。
name 来区分表单的语义,并使用id 在CSS 中选择它们。我认为这就是 WHATWG 的想法。
为元素指定名称后,您可以在整个代码中通过document.name_of_element 引用该元素。当您有多个同名字段时无法判断,但它确实允许使用以下快捷方式:
<form name="myform" ...>
document.myform.submit();
而不是
document.getElementsByName('myform')[0].submit();
【讨论】:
window.id,或者只是 id,因为 window 是全球性的,似乎可以工作
以下是MDN 对此的评价:
name
表单的名称。在 HTML 4 中,不推荐使用它(应该使用id代替)。它在文档中的表单中必须是唯一的,而不仅仅是 HTML 5 中的空字符串。
当它在 HTML 4 中被弃用时,我发现它在 HTML 5 中必须是唯一的、非空的字符串,我觉得这有点令人困惑。(我猜这个要求只适用于完全指定了 name 属性的情况?)。但我认为可以肯定地说,它曾经服务的任何目的都已被id 属性所取代。
【讨论】:
small 就是其中之一,最初的含义只是为了大小,但现在它具有了诸如“小字号”之类的语义含义。我还没有找到更多关于此的信息,但name 属性也可能已在 HTML5 中重新定义。
您可以将 name 属性用作“额外信息”属性 - 类似于使用隐藏输入 - 但这会将额外信息绑定到表单中,从而使其阅读/访问更简单。
【讨论】:
name 属性不会。如果您只想提供额外的数据供客户端代码访问,那么data-* 属性就是为此目的而明确提供的。
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 是HTMLCollection 的保留属性),则可以使用更简洁的符号:
document.getElementById('person1').children.lastname
DOM Living Standard 2019 March 29
HTMLCollection 对象是元素的集合...
namedItem(key) 方法在调用时必须运行以下步骤:
如果key为空字符串,则返回null。
返回集合中至少满足以下一项的第一个元素: 它有一个关键的 ID; 它在 HTML 命名空间中,并且有一个 name 属性,其值为 key;
【讨论】: