HTML中id和name属性的区别

idname属性有什么区别? 它们似乎都提供了提供标识符的相同目的。

我想知道(特别是关于HTML表单)是否由于任何原因而使用两者。

在表单提交中发送数据时使用name属性。 不同的控制反应不同。 例如,您可能有几个具有不同id属性的单选button,但name相同。 提交时,响应中只有一个值 – 您select的单选button。

当然,除此之外还有更多的东西,但它肯定会让你朝着正确的方向思考。

使用表单控件的name属性(如<input><select> ),因为这是在表单提交时发生的POSTGET调用中使用的标识符。

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

Id用于通过文档对象模型(通过Javascript或CSS样式)标识HTML元素。 预计ID在页面内是唯一的。

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

请参阅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(文档对象模型)使用的字段。 name =中的名称在表单中必须是唯一的。 id =中的名称在整个文档中必须是唯一的。

有时name =和id =名称会有所不同,因为服务器期望在同一个文档中的各种forms的相同名称或与上面的例子中相同forms的各种单选button。 id =必须是唯一的; 名字=不能是。

JavaScript需要唯一的名称,但是这里有太多的文档没有独特的名称= name,所以W3人发明了需要唯一的id标签。 不幸的是,旧的浏览器不理解它。 所以你需要在你的表单中使用两个命名scheme。

注:HTML5中不支持某些标记(如<a> )的属性“名称”。

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

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

当通过HTML提交表单时, 名称用于PHP中的表单处理(在表单中必须是唯一的 – 在某种程度上,请参见下面Paul的评论)

ID标签 – 由CSS使用,定义了div,span或其他元素的唯一实例。 在Javascript DOM模型中出现,允许您通过各种函数调用访问它们。

字段的名称标签 – 每个表单都是唯一的,除非您要传递给PHP /服务器端处理的数组。 您可以通过名称访问它,但我认为它不会在DOM中显示为节点,或者可能会应用一些限制(例如,如果我正确记得,您不能使用.innerHTML)。

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

name不适用于链接目标,在HTML5中无效。 它至less在最新的Firefox(v13)中不再起作用。 将<a id="hello">更改为<a id="hello">

目标不需要是<a>标签,它可以是<p id="hello" >或<h2 id="hello">等等,这通常是更清晰的代码。

正如其他职位清楚地表明, name仍然使用(需要)的forms。 它也被用在META标签中。

这个链接有相同的基本问题的答案,但基本上,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

  • 通常与CSS一起使用来设置特定的元素。 这个属性的值必须是唯一的。
  • Id是全局属性 ,它们可以在所有元素上使用,虽然属性可能对某些元素没有影响。
  • 在整个文档中必须是唯一的。
  • 此属性的值不能包含空格,而不能使用空格分隔的类属性。
  • 使用ASCII字母和数字以外的字符,“_”,“ – ”和“。” 可能会导致兼容性问题,因为它们在HTML 4中是不允许的。虽然这个限制已经在HTML 5中解除了,但是为了兼容性,ID应该以字母开始。

通常,假定名称总是被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> 

为确保兼容性,在定义两者时具有匹配的名称和ID属性值是一个好主意。 但是,要小心 – 一些标签, 特别是单选button,必须有不唯一的名称值,但需要唯一的ID值。 再一次,这应该引用这个id不是简单地replace名字; 他们的目的不同。 此外,不要打折老式的做法,深入了解现代图书馆有时会用到这样的语法风格,用于表演和缓和目的。 你的目标应该总是有利于兼容性。

现在在大多数元素中,name属性已被弃用,以支持无处不在的id属性。 然而,在某些情况下,特别是表单域( <button><input><select><textarea> ),name属性仍然存在,因为它继续需要为表单提交设置名称 – 值对。 此外,我们发现一些元素,特别是框架和链接,可能会继续使用name属性,因为它通常用于按名称检索这些元素。

id和name之间有明显的区别。 通常当名称继续时,我们可以设置相同的值。 但是,id必须是唯一的,在某些情况下名称不应该是单选button。 可悲的是,标记validation所捕获的id值的唯一性并不像应该那样一致。 浏览器中的CSS实现将设置共享一个id值的对象; 因此,我们可能不会捕获直到运行时才会影响JavaScript的标记或样式错误。

这是从The Complete Reference by Thomas-Powell JavaScript JavaScript The Complete Reference by Thomas-Powell

表单input元素的ID与元素中包含的数据无关。 ID是用JavaScript和CSS钩住元素的。 但是,name属性用于浏览器发送给服务器的HTTP请求中,作为与value属性中包含的数据关联的variables名称。

例如:

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

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

如果添加一个ID属性,它将不会更改HTTP标头中的任何内容。 这将使它更容易与CSS和JavaScript挂钩。

如果您没有使用表单自己的提交方法将信息发送到服务器(而是使用javascript),则可以使用name属性将附加信息附加到input – 而不是像使用隐藏的input值进行配对,但看起来整洁,因为它被纳入input。

这一点目前仍然在Firefox工作,但我想在未来它可能不被允许通过。

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

以下是id属性的一个有趣用法。 它在标签中使用,用于标识边界外的元素的表单,以便将其与表单中的其他字段一起使用。

  <form action="action_page.php" id="form1"> First name: <input type="text" name="fname"><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="lname" form="form1"> 

Id:1)它用于通过文档对象模型(通过Javascript或CSS样式)标识HTML元素。 2)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”标签由CSS和JavaScript用来分配样式并作用于input项目。 像jQuery这样的库使用id作为快捷方式标识符,因此设置通常很有用。

表单元素的“name”属性是您的Web浏览器在HTTP GET或POST提交/请求到Web服务器时实际发送的内容。 如果您将其留空,则不会有与您的内容相关的正确标识符。

但是,您可能正在使用JavaScript通过AJAX提交表单,这意味着您绝不会通过GET或POST通过直接的Web浏览器提交来发送表单variables。 在这种情况下,名称字段是不必要的,虽然它不是很好的约定。

我用来唯一标识一个元素的ID。

名称用于表单。 甚至当你提交表格。 如果您不提供任何名称,则不会提交任何内容。 只有name属性的才会出去。