名称属性在 HTML 文档中是否必须是唯一的?

新手上路,请多包涵

我记得曾经在规范中读到 id 属性和 name 属性共享相同的命名空间并且必须是唯一的。从今以后,我一直试图在我的应用程序中满足这一要求,甚至害怕将相同的 idname 提供给相同的元素。

但最近我开始使用 ASP.NET MVC 3,它(像 PHP)可以在几个输入控件上使用相同的 name 属性以在服务器端形成值的集合。我试图查找规范中的相关部分 - 但没有找到。也许我当时误解了什么,或者阅读了错误的文档?

那怎么样呢?我想生成尽可能有效的 HTML(不同应用程序中的 4.01 和 5)。我能毫无畏惧地使用这一招吗?还是我会违反某些事情并且应该更好地坚持独特的价值观?

原文由 Vilx- 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 888
2 个回答

The name attribute is only valid on the <form> and form elements ( <input> , <textarea> and <select> ).它用于指定 name 与在表单帖子上提交的名称/值对相关联。

例如:

 <input type="checkbox" name="foo" value="1" />

如果选中将提交 foo=1 。在 DOM 中,您可以通过将 name 指定为索引来引用 form.elements 集合中的表单元素。如果 name 不是唯一的,则集合返回一个元素数组而不是元素。现代 DOM 支持按名称查找表单元素:

  document.getElementsByName(nameValue)

注意:即使只找到一个元素,它也总是返回一个数组。

id 属性来自 XML 世界,是任何节点的唯一标识,而不仅仅是表单元素。与 name 属性不同,它在任何 HTML 节点上都有效。也像 name 属性一样,它必须遵循有效标识符规则。标识符应以 alpha 开头,并且仅包含 alpha ( [a-zA-Z] )、数字、连字符、下划线和冒号(注意 ASP.NET 通过以下划线开头保留 ID 打破了此规则 - 因此它们将始终失败一个 HTML/XML lint——实际上一些代理会剥离它们)。要通过 id 查找任何 HTML 元素,您可以使用:

 document.getElementById(idvalue)

这只会返回一个 DOM 节点。

原文由 Kolten 发布,翻译遵循 CC BY-SA 4.0 许可协议

name 属性不是唯一的。例如,它用于对单选按钮进行分组。它表示特定表单属性的值。 id s 必须是唯一的。

原文由 Ishmael 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题