yog*_*ear 670 html attributes
id和name属性有什么区别?它们似乎都与提供标识符的目的相同.
我想知道(特别是关于HTML表单)是否有必要或鼓励使用两者都是出于任何原因.
Joh*_*her 585
name在表单提交中发送数据时使用该属性.不同控制的反应不同.例如,您可能有几个具有不同id属性的单选按钮,但相同name.提交时,响应中只有一个值 - 您选择的单选按钮.
当然,除此之外还有更多,但它肯定会让你思考正确的方向.
War*_*ung 317
使用name表单控件的属性(例如<input>和<select>),因为这是在表单提交时使用的标识符POST或GET调用.
id只要需要使用CSS,JavaScript或片段标识符来处理特定HTML元素,就可以使用属性.也可以按名称查找元素,但通过ID查找它们更简单,更可靠.
Mik*_*bee 107
id用于通过文档对象模型(通过JavaScript或使用CSS样式)标识HTML元素.id预计在页面内是唯一的.
name对应于表单元素,并标识发回服务器的内容.
小智 27
请参阅此http://mindprod.com/jgloss/htmlforms.html#IDVSNAME
有什么不同?简短的回答是,使用两者并且不用担心它.但是如果你想要理解这种愚蠢,这就是瘦的:
id =用作这样的目标:
<some-element id="XXX"></some-element>对于这样的链接:<a href="#XXX".name =还用于标记当您在表单中按提交时,使用HTTP(超文本传输协议)GET或POST发送到服务器的消息中的字段.
id =标记JavaScript和Java DOM(文档对象模型)使用的字段.名称中的名称=在表单中必须是唯一的.id =中的名称在整个文档中必须是唯一的.
有时,name =和id = names会有所不同,因为服务器期望同一文档中的各种表单中的相同名称或与上例中相同形式的各种单选按钮.id =必须是唯一的; 名字=一定不能.
JavaScript需要唯一的名称,但是这里有太多的文档而没有唯一的name = names,因此W3人发明了必须是唯一的id标记.不幸的是旧浏览器不理解它.因此,您需要在表单中使用两种命名方案.
注意:<a>HTML5中不支持某些标签的属性"name" .
Ext*_*kun 14
ID标记 - 由CSS使用,定义div,span或其他元素的唯一实例.出现在Javascript DOM模型中,允许您使用各种函数调用来访问它们.
字段的名称标记 - 这对于每个表单都是唯一的- 除非您正在执行要传递给PHP /服务器端处理的数组.您可以通过Javascript按名称访问它,但我认为它不会显示为DOM中的节点或某些限制可能适用(例如,如果我没记错的话,您不能使用.innerHTML).
Shi*_*han 11
通常,假设名称始终被id取代.实际上,这在某种程度上是正确的,但实际上并非形式字段和框架名称.例如,对于表单元素,该name属性用于确定要发送到服务器端程序的名称 - 值对,不应该被删除.Browsers do not use id in that manner.为了安全起见,您可以在表单元素上使用name和id属性.所以,我们写下以下内容:
<form id="myForm" name="myForm">
<input type="text" id="userName" name="userName" />
</form>
Run Code Online (Sandbox Code Playgroud)
为了确保兼容性,在定义两者时具有匹配的名称和id属性值是个好主意.但是,请注意 - 某些标记(尤其是单选按钮)必须具有非唯一的名称值,但需要唯一的ID值.再次,这应该引用id不仅仅是名称的替代; 它们的目的不同.此外,不要忽视旧式方法,深入了解现代图书馆有时会显示出用于表现和轻松目的的语法风格.您的目标应始终是支持兼容性.
现在在大多数元素中,不推荐使用name属性,而是支持更普遍的id属性.然而,在某些情况下,特别是形成字段(<button>,<input>,<select>和<textarea>),name属性住在,因为它仍然需要设定表单提交的名称-值对.此外,我们发现一些元素,特别是框架和链接,可能会继续使用name属性,因为它通常用于按名称检索这些元素.
id和name之间有明显的区别.通常,当名称继续时,我们可以设置相同的值.但是,id必须是唯一的,并且在某些情况下名称不应该 - 认为单选按钮.遗憾的是,id值的唯一性虽然被标记验证所捕获,但并不像它应该的那样一致.浏览器中的CSS实现将设置共享id值的对象的样式; 因此,我们可能无法捕获可能影响我们的JavaScript直到运行时的标记或样式错误.
这取自JavaScript- The Complete Reference by Thomas-Powell
小智 9
name已弃用链接目标,在HTML5中无效.它至少在最新的Firefox(第13版)中不再适用.更改<a name="hello">到<a id="hello">
目标不需要是<a>标记,它可以是<p id="hello">或<h2 id="hello">等等,这通常是更清晰的代码.
正如其他帖子所说的那样,name仍然在表格中使用(需要).它仍然用于META标签.
小智 9
<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>
Run Code Online (Sandbox Code Playgroud)
小智 9
<body>
<form action="">
<label for="username">Username</label>
<input type="text" id="username" name="username">
<button>Submit!</button>
</form>
</body>Run Code Online (Sandbox Code Playgroud)
正如我们在这里看到的,“id”和“for”元素是相互关联的。如果您单击标签(用户名),则输入字段将突出显示(这对于移动用户很有用,并且被认为是一个很好的做法)。
另一方面,“名称”元素在提交表单时很有用。无论您在输入字段中输入什么内容,它都会显示在 URL 上。请参阅附图。

此链接具有相同基本问题的答案,但基本上,id用于脚本标识,名称用于服务器端.
http://www.velocityreviews.com/forums/t115115-id-vs-name-attribute-for-html-controls.html
name Vs id名称
<button>, <form>, <fieldset>, <iframe>,
<input>, <keygen>, <object>, <output>, <select>, <textarea>, <map>,
<meta>, <param>表单输入元素的ID与该元素中包含的数据无关。ID用于将元素与JavaScript和CSS挂钩。但是,名称属性在浏览器发送到服务器的HTTP请求中用作与值属性中包含的数据关联的变量名称。
例如:
<form>
<input type="text" name="user" value="bob">
<input type="password" name="password" value="abcd1234">
</form>
Run Code Online (Sandbox Code Playgroud)
提交表单后,表单数据将包含在HTTP标头中,如下所示:
如果添加ID属性,它将不会更改HTTP标头中的任何内容。它将使其更容易与CSS和JavaScript挂钩。