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

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


当前回答

<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>

其他回答

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

HTML控件的id与name属性

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

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

根据个人经验和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-完整参考》一书。

Id:

它用于通过文档对象模型(DOM)(通过JavaScript或CSS样式)识别HTML元素。Id在页面中应该是唯一的。

名称对应于表单元素,并标识返回到服务器的内容。

例子:

<form action="action_page.php" id="Myform">
    First name: <input type="text" name="FirstName"><br>
    <input type="submit" value="Submit">
</form>

<p>The "Last name" field below is outside the form element, but still part of the form.</p>
Last name: <input type="text" name="LastName" form="Myform">