HTML中的Name vs Id属性

时间:2010-12-20 08:08:28

标签: html

使用<div id="here" ...代替<div name="here" ...

是否有任何好处

它们都被称为#here?

7 个答案:

答案 0 :(得分:41)

以下是两者之间的一些区别:

  1. name从未成为div元素属性。
  2. 表单控件上使用的名称(input,textarea,select,button元素)与命名元素的id属性完全不同。在这种情况下,name属性与发送到服务器时数据的标签方式有关,并且多个元素可以共享相同的名称。另一方面,id属性用于标识脚本,样式或寻址的唯一元素。
  3. 在表单控件之外的其他元素上使用name属性在HTML4.01中与id的相同,但它允许比id属性更广泛的字符集,并且不能完全控制一样的方法。由于这种不明确性,W3C决定弃用/删除这些元素的name属性,转而支持XHTML中的unambigous id属性。这也与XML的另一个细节有关 - 但是任何元素的只有一个属性可能属于ID类型,如果它们让名称留在元素上但纠正了歧义问题则不会是这种情况。

  4. 由于name属性在这两组元素上的作用不同,如果最好删除它们。

  5. 简而言之,为了向后兼容,如果使用HTML4.01或XHTML1.0 Transitional,则应该对除表单控件之外的所有元素使用name和id属性,两者都设置为相同的值。如果您使用XHTML1.0 Strict或更高版本,则应仅使用id。对于表单控件,您应该使用名称来表示您希望表单发送到服务器以及DOM0访问,并且仅使用id进行样式设置,DOM1-3访问或解决原因

答案 1 :(得分:4)

这取决于您将使用它们的位置。

通常,元素的id是唯一的,而多个元素可以共享相同的name

我的ID被引用为#here,名称被引用为[name=here]

答案 2 :(得分:3)

它们不是可互换的,即使它们有时似乎也是如此。

名称应仅存在于表单输入字段中。该标记将导致浏览器在提交中作为字段名称传递。正如Tomalak在评论中指出的那样,DIV实际上没有Name属性。

ID是DOM的唯一标识符,用于操作或引用标记;例如,在Javascript中。

答案 3 :(得分:1)

“id”属性为关联元素分配标识符。该标识符在文档中必须是唯一的,并且可用于引用该元素。

检查以下链接

http://www.htmlquick.com/reference/tags/div.html

答案 4 :(得分:0)

您正在考虑的可能是输入标记。它提供了name属性来标识表单提交时的输入。

id仅用于设置输入样式,而name不会。

答案 5 :(得分:0)

在其他答案中没有提到的重要事项是,将具有名称属性的表单作为变量添加到javascript中的文档对象中。在该表单内具有名称的任何表单控件都可以作为form元素上的子对象进行访问。

例如,如果您有一些类似以下的HTML:

<form name="myForm">
  <input name="myInput" type="text" />
</form>

您可以使用document.myForm访问表单,也可以使用document.myForm.myInput访问输入元素。

JSFiddle上看到该想法的示例。

答案 6 :(得分:0)

答案是:

  1. id attribute在整个HTML文档中都是唯一的,并且
  2. name attribute没有这样的要求。

按照惯例,名称值与表单一起使用,以帮助处理表单,尤其是单选按钮。您如何使用name属性取决于您的用例。如果您的用例需要其他标签,则当然可以创建一个新属性并按需使用。为您的属性选择一个可能非常独特的名称!