我记得曾经在规范中读到 id
属性和 name
属性共享相同的命名空间并且必须是唯一的。从今以后,我一直试图在我的应用程序中满足这一要求,甚至害怕将相同的 id
和 name
提供给相同的元素。
但最近我开始使用 ASP.NET MVC 3,它(像 PHP)可以在几个输入控件上使用相同的 name
属性以在服务器端形成值的集合。我试图查找规范中的相关部分 - 但没有找到。也许我当时误解了什么,或者阅读了错误的文档?
那怎么样呢?我想生成尽可能有效的 HTML(不同应用程序中的 4.01 和 5)。我能毫无畏惧地使用这一招吗?还是我会违反某些事情并且应该更好地坚持独特的价值观?
原文由 Vilx- 发布,翻译遵循 CC BY-SA 4.0 许可协议
The
name
attribute is only valid on the<form>
and form elements (<input>
,<textarea>
and<select>
).它用于指定name
与在表单帖子上提交的名称/值对相关联。例如:
如果选中将提交
foo=1
。在 DOM 中,您可以通过将name
指定为索引来引用form.elements
集合中的表单元素。如果name
不是唯一的,则集合返回一个元素数组而不是元素。现代 DOM 支持按名称查找表单元素:注意:即使只找到一个元素,它也总是返回一个数组。
id
属性来自 XML 世界,是任何节点的唯一标识,而不仅仅是表单元素。与name
属性不同,它在任何 HTML 节点上都有效。也像name
属性一样,它必须遵循有效标识符规则。标识符应以 alpha 开头,并且仅包含 alpha ([a-zA-Z]
)、数字、连字符、下划线和冒号(注意 ASP.NET 通过以下划线开头保留 ID 打破了此规则 - 因此它们将始终失败一个 HTML/XML lint——实际上一些代理会剥离它们)。要通过id
查找任何 HTML 元素,您可以使用:这只会返回一个 DOM 节点。