HTML中id和name属性的区别
id
和name
属性有什么区别? 它们似乎都提供了提供标识符的相同目的。
我想知道(特别是关于HTML表单)是否由于任何原因而使用两者。
在表单提交中发送数据时使用name
属性。 不同的控制反应不同。 例如,您可能有几个具有不同id
属性的单选button,但name
相同。 提交时,响应中只有一个值 – 您select的单选button。
当然,除此之外还有更多的东西,但它肯定会让你朝着正确的方向思考。
使用表单控件的name
属性(如<input>
和<select>
),因为这是在表单提交时发生的POST
或GET
调用中使用的标识符。
每当需要使用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属性的才会出去。