使用<div id="here" ...
代替<div name="here" ...
它们都被称为#here?
答案 0 :(得分:41)
以下是两者之间的一些区别:
在表单控件之外的其他元素上使用name属性在HTML4.01中与id的相同,但它允许比id属性更广泛的字符集,并且不能完全控制一样的方法。由于这种不明确性,W3C决定弃用/删除这些元素的name属性,转而支持XHTML中的unambigous id属性。这也与XML的另一个细节有关 - 但是任何元素的只有一个属性可能属于ID类型,如果它们让名称留在元素上但纠正了歧义问题则不会是这种情况。
由于name属性在这两组元素上的作用不同,如果最好删除它们。
简而言之,为了向后兼容,如果使用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)
答案 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)
答案是:
按照惯例,名称值与表单一起使用,以帮助处理表单,尤其是单选按钮。您如何使用name属性取决于您的用例。如果您的用例需要其他标签,则当然可以创建一个新属性并按需使用。为您的属性选择一个可能非常独特的名称!