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

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


当前回答

链接目标的名称已弃用,在HTML5中无效。至少在最新的Firefox(v13)中,它不再有效。将<a name=“hello”>更改为<a id=“hello“>。

目标不需要是<a>标记。它可以是<p id=“hello”>或<h2 id=“hello>等,这通常是更干净的代码。

正如其他帖子所明确指出的,名称仍然在表单中使用(需要)。它仍然在META标签中使用。

其他回答

如果您没有使用表单自己的提交方法将信息发送到服务器(而是使用JavaScript),则可以使用name属性将额外的信息附加到输入中,就像将其与隐藏的输入值配对一样,但它看起来更整洁,因为它包含在输入中。

虽然我认为在未来它可能不会被允许通过,但这一点目前在Firefox中仍然有效。

您可以有多个具有相同名称值的输入字段,只要您不打算以老式方式提交。

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

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

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

<form action="demo_form.asp">
    <label for="male">Male</label>
    <input type="radio" name="sex" id="male" value="male"><br>

    <label for="female">Female</label>
    <input type="radio" name="sex" id="female" value="female"><br>

    <input type="submit" value="Submit">
</form>

根据个人经验和W3Schools属性描述:

ID是一个全局属性,几乎适用于HTML中的所有元素。它用于唯一标识网页上的元素,其值主要从前端访问(通常通过JavaScript或jQuery)。

name是对HTML中的特定元素(如表单元素等)有用的属性。它的值大部分被发送到后端进行处理。

HTML属性引用

通常,假设名称总是被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-完整参考》一书。