id和name属性之间有什么区别?它们似乎都具有提供标识符的相同目的。
我想知道(特别是关于HTML表单)是否出于任何原因需要或鼓励同时使用两者。
id和name属性之间有什么区别?它们似乎都具有提供标识符的相同目的。
我想知道(特别是关于HTML表单)是否出于任何原因需要或鼓励同时使用两者。
当前回答
链接目标的名称已弃用,在HTML5中无效。至少在最新的Firefox(v13)中,它不再有效。将<a name=“hello”>更改为<a id=“hello“>。
目标不需要是<a>标记。它可以是<p id=“hello”>或<h2 id=“hello>等,这通常是更干净的代码。
正如其他帖子所明确指出的,名称仍然在表单中使用(需要)。它仍然在META标签中使用。
其他回答
ID标记-由CSS使用,定义div、span或其他元素的唯一实例。出现在JavaScript DOM模型中,允许您通过各种函数调用访问它们。
字段的Name标记(每个表单都是唯一的),除非您正在执行要传递给PHP/服务器端处理的数组。您可以通过JavaScript按名称访问它,但我认为它不会在DOM中显示为节点,或者可能会受到一些限制(例如,如果我回忆正确,您不能使用.innerHTML)。
我思考和使用它的方式很简单:
id用于CSS和JavaScript/jQuery(它在页面上必须是唯一的)。
当表单通过HTML提交时,该名称用于服务器上的表单处理(表单中的名称必须是唯一的-在某种程度上,请参阅下面Paul的评论)。
表单输入元素的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挂钩。
如果您没有使用表单自己的提交方法将信息发送到服务器(而是使用JavaScript),则可以使用name属性将额外的信息附加到输入中,就像将其与隐藏的输入值配对一样,但它看起来更整洁,因为它包含在输入中。
虽然我认为在未来它可能不会被允许通过,但这一点目前在Firefox中仍然有效。
您可以有多个具有相同名称值的输入字段,只要您不打算以老式方式提交。
<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>