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

名称属性在HTML文档中必须是唯一的吗?,html,unique,Html,Unique,我记得曾经在规范中读到,id属性和name属性共享相同的名称空间,并且必须是唯一的。从今以后,我一直试图在我的应用程序中满足这一要求,甚至害怕给同一个元素赋予相同的id和name 但是最近我开始使用ASP.NET MVC 3,它(像PHP一样)可以在几个输入控件上使用相同的name属性来形成服务器端的值集合。我试图查找规范中的相关部分,但没有找到。也许我误解了什么,或者读错了文档 那怎么样?我想产生尽可能有效的HTML(4.01和5在不同的应用程序)。我能毫无畏惧地使用这个技巧吗?或者我会违反某

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

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


那怎么样?我想产生尽可能有效的HTML(4.01和5在不同的应用程序)。我能毫无畏惧地使用这个技巧吗?或者我会违反某些规则,最好坚持使用唯一的值?

属性仅在
和表单元素(
)上有效。它用于指定要与表单帖子上提交的名称/值对关联的
名称

例如:

<input type="checkbox" name="foo" value="1" />
注意:即使只找到一个元素,它也总是返回一个数组

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

document.getElementById(idvalue)

这只返回一个DOM节点。

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

id应该是唯一的,但是您可以使用多个具有相同名称的表单元素。这是单选按钮工作方式的标准,因此您可以强制选择单选按钮组。

Ahh!似乎我错过了上下文。:)实际上,
name
属性适用于少数其他元素,但它只是复制了
id
属性,如果两者都定义了,实际上必须与之相等。幸运的是,这不适用于表单元素。:)需要注意的是,
还使用锚文本的name属性。html5中的id和name可以包含空格以外的任何字符,但必须至少包含一个字符:
document.getElementById(idvalue)