id和name属性之间有什么区别?它们似乎都具有提供标识符的相同目的。

我想知道(特别是关于HTML表单)是否出于任何原因需要或鼓励同时使用两者。


当前回答

我思考和使用它的方式很简单:

id用于CSS和JavaScript/jQuery(它在页面上必须是唯一的)。

当表单通过HTML提交时,该名称用于服务器上的表单处理(表单中的名称必须是唯一的-在某种程度上,请参阅下面Paul的评论)。

其他回答

下面的论坛主题有相同基本问题的答案,但基本上,id用于脚本标识,name用于服务器端。

HTML控件的id与name属性

名称与id


name

元素的名称。例如,服务器用于标识表单中的字段提交。支持元素有<button>、<form>、<fieldset>、<iframe>、,<input>,<keygen>,<object>,<output>,<select>,<textarea>,<map>,<meta>和<param>名称不必是唯一的。

id

通常与CSS一起使用以设置特定元素的样式。这个的价值属性必须唯一。Id是全局属性。全局属性可以用于所有元素,尽管这些属性可能对某些元素没有影响。必须在整个文档中唯一。与此相反,此属性的值不能包含空格class属性,它允许用空格分隔值。使用ASCII字母和数字以外的字符,“_”、“-”和“.”可能会导致兼容性问题,因为HTML 4中不允许这些问题。虽然HTML5中取消了此限制,但ID应该开始带有兼容性字母。

name和id都可以被#作为目标,因此不确定为什么只为该任务提及id。

我经常检查这些属性,以创建指向书签的特定链接(由于某些原因,没有提供使用鼠标光标单击标题以进行相同操作),例如Option File InclusionsMySQL 5.6 4.2.2.2使用选项文件文档部分:

https://dev.mysql.com/doc/refman/5.6/en/option-files.html#option-文件内含物

其中定义为<a name=“option file inclusions”></a>(绝对不涉及表单)。

我认为,在HTML中,name属性也比id旧。

使用表单控件的名称属性(如<input>和<select>),因为这是表单提交时POST或GET调用中使用的标识符。

每当需要使用CSS、JavaScript或片段标识符来处理特定的HTML元素时,请使用id属性。也可以按名称查找元素,但按ID查找更简单、更可靠。

通常,假设名称总是被id取代。这在某种程度上是正确的,但实际上对于表单字段和框架名称来说不是这样。例如,对于表单元素,name属性用于确定要发送到服务器端程序的名称-值对,不应删除。浏览器不会以这种方式使用id。为了安全起见,可以在表单元素上使用name和id属性。因此,我们将编写以下内容:

<form id="myForm" name="myForm">
     <input type="text" id="userName" name="userName" />
</form>

为了确保兼容性,在定义名称和id属性值时,最好使用匹配的值。但是,请注意一些标记,特别是单选按钮,必须具有非唯一的名称值,但需要唯一的id值。

同样,这应该说明id不仅仅是名称的替代品;它们的目的不同。此外,不要轻视旧风格的方法,深入研究现代库可以发现,这种语法风格有时用于提高性能和方便性。你的目标应该总是有利于兼容性。

现在在大多数元素中,name属性已经被弃用,取而代之的是更普遍的id属性。然而,在某些情况下,特别是表单字段(<button>、<input>、<select>和<textarea>),name属性仍然有效,因为它仍然需要设置表单提交的名称值对。此外,我们发现一些元素,特别是框架和链接,可能会继续使用name属性,因为它通常用于按名称检索这些元素。

id和name之间有明显的区别。通常,当name继续时,我们可以将值设置为相同。然而,id必须是唯一的,并且在某些情况下名称不应与单选按钮相关联。遗憾的是,id值的唯一性虽然受到标记验证的限制,但并没有达到应有的一致性。浏览器中的CSS实现将为共享id值的对象设置样式;因此,在运行时之前,我们可能无法捕捉到可能影响JavaScript的标记或样式错误。

本文摘自托马斯·鲍威尔的《JavaScript-完整参考》一书。