id和name属性之间有什么区别?它们似乎都具有提供标识符的相同目的。
我想知道(特别是关于HTML表单)是否出于任何原因需要或鼓励同时使用两者。
id和name属性之间有什么区别?它们似乎都具有提供标识符的相同目的。
我想知道(特别是关于HTML表单)是否出于任何原因需要或鼓励同时使用两者。
当前回答
<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>
其他回答
ID标记-由CSS使用,定义div、span或其他元素的唯一实例。出现在JavaScript DOM模型中,允许您通过各种函数调用访问它们。
字段的Name标记(每个表单都是唯一的),除非您正在执行要传递给PHP/服务器端处理的数组。您可以通过JavaScript按名称访问它,但我认为它不会在DOM中显示为节点,或者可能会受到一些限制(例如,如果我回忆正确,您不能使用.innerHTML)。
表单输入元素的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挂钩。
<body><form action=“”><label for=“username”>用户名</label><input type=“text”id=“username”name=“username“><button>提交</按钮></form></body>
正如我们在这里看到的,“id”和“for”元素是相互关联的。如果单击标签(用户名),则输入字段将突出显示(这对移动用户很有用,被认为是一种良好的做法)。
另一方面,“name”元素在提交表单时很有用。无论您在输入字段中输入什么,它都将显示在URL上。请参阅随附的图片。
在这个问题一直存在的过程中,我很懊恼(也许有点难过),没有人想过提到可访问性,尽管它一直很重要,但它一直在管理层和软件工程师中稳步获得支持(仅从我的个人观察来看;没有硬数据支持)。
我可以提供的一个统计数据如下(来源):
因此,对可访问性缺点的认识呈现出稳步增长的趋势。同样的参考文献提到,从这些数字中,我们可以观察到每小时至少有一次诉讼被提起!
那么,可访问性如何影响姓名与身份?
根据万维网联盟(W3C):
标签的for属性必须与表单控件。
在表单提交中发送数据时使用name属性。不同的控件响应不同。例如,您可能有几个具有不同id属性但名称相同的单选按钮。提交后,响应中只有一个值-您选择的单选按钮。
当然,这还不止于此,但它肯定会让你朝着正确的方向思考。