在HTML文档中,name属性必须是唯一的吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (90)

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

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

那是怎么回事?我想产生尽可能有效的HTML(4.01和5在不同的应用程序)。我能无所畏惧地用这个把戏吗?或者我是否违反了某些东西,最好坚持独特的价值观?

提问于
用户回答回答于

name属性仅在<form>和形式元素(<input><textarea><select>)。name若要与在表单POST上提交的名称/值对关联,请执行以下操作。

例如:

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

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

 document.getElementsByName(nameValue)

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

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

document.getElementById(idvalue)

这只返回一个DOM节点。

用户回答回答于

name属性不是唯一的。例如,它用于对单选按钮进行分组。它表示特定窗体属性的值。id肯定是独一无二的。

扫码关注云+社区

领取腾讯云代金券