名称属性在HTML文档中是否必须是唯一的?
我记得阅读规范一次, id
属性和name
属性共享相同的名称空间,必须是唯一的。 从今以后,我一直试图在我的应用程序中满足这个要求,甚至为同一个元素赋予相同的id
和name
。
但最近我已经开始使用ASP.NET MVC 3,并且它(如PHP)可以在几个input控件上使用相同的name
属性在服务器端形成一组值。 我试图查看规范中的相关部分 – 但没有find它。 也许我误解了一些东西,或者读错了文档?
那怎么样? 我想生成尽可能有效的HTML(在不同的应用程序4.01和5)。 我可以毫不畏惧地使用这个技巧吗? 或者我会违反一些东西,应该坚持独特的价值观?
name
属性只对<form>
和表单元素( <input>
, <textarea>
和<select>
)有效。 它用于指定与在表单提交上提交的名称/值对关联的名称。
例如:
<input type="checkbox" name="foo" value="1" />
如果选中将提交foo=1
。 在DOM中,您可以通过指定name
作为索引来引用form.elements
集合中的表单元素。 如果name
不是唯一的,则集合返回一个元素数组而不是元素。 现代DOM的支持通过名称查找forms元素为:
document.getElementsByName(nameValue)
注意:即使只find一个元素,它总是返回一个数组。
id
属性来自XML世界,并且是任何节点的唯一标识符,而不仅仅是表单元素。 与name
属性不同,它在任何HTML节点上都是有效的。 也像name
属性一样,它必须遵循有效的标识符规则。 标识应该以alpha开始,并且只包含alpha( [a-zA-Z]
),数字,连字符,下划线和冒号(注意,ASP.NET通过使用下划线开始保留ID来打破这个规则 – 因此它们总是会失败一个HTML / XML lint – 实际上是一些代理去除它们)。 要使用id
查找任何HTML元素:
document.getElementById(idvalue)
这只返回一个DOM节点。
name
属性不是唯一的。 例如,它用于分组单选button。 它代表了特定表单属性的价值。 id
必须是唯一的。
ID应该是唯一的,但是可以使用多个具有相同名称的表单元素。 这是单选button如何工作的标准,所以你可以强制单选button组。