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

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


当前回答

id将给一个元素一个id,所以一旦你编写了真正的代码(比如JavaScript),你就可以使用这个id来读取元素。名称只是一个名称,所以我想用户可以看到元素的名称。

例子:

<h1 id="heading">text</h1>
<script>
  document.getElementById("heading"); // Reads the element that has the id "heading".
</script>
// You can also use something like this:
document.getElementById("heading").value; // Reads the value of the selected element.

其他回答

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

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

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

表单输入元素的ID与元素中包含的数据无关。ID用于将元素与JavaScript和CSS挂钩。然而,name属性在浏览器向服务器发送的HTTP请求中用作与value属性中包含的数据相关联的变量名。

例如:

<form>
    <input type="text" name="user" value="bob">
    <input type="password" name="password" value="abcd1234">
</form>

提交表单时,表单数据将包含在HTTP标头中,如下所示:

如果添加ID属性,则不会更改HTTP标头中的任何内容。它只会让它更容易与CSS和JavaScript挂钩。

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

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

id将给一个元素一个id,所以一旦你编写了真正的代码(比如JavaScript),你就可以使用这个id来读取元素。名称只是一个名称,所以我想用户可以看到元素的名称。

例子:

<h1 id="heading">text</h1>
<script>
  document.getElementById("heading"); // Reads the element that has the id "heading".
</script>
// You can also use something like this:
document.getElementById("heading").value; // Reads the value of the selected element.