基本上,“name”属性用于服务器端编程(名称/值对在请求中发送),“id”属性用于客户端编程(即 Javascript 和 CSS)。
但两者本质上实现相同的功能 - 提供元素的唯一标识。为了不过分复杂化,如果一个事物只有一个标识符,这将很有用。
因此问题 - 对于同时需要“id”和“name”的标签:
是否有任何理由为 name 和 id 属性选择不同的标识符?是否有任何需要不同标识符的用例?语法上有什么不同吗? (例如,您可以使用“myarray[123]”作为名称属性,PHP 将正确理解并创建一个数组,它是否也可以以类似的方式用于 Javascript 或 CSS 中的 id 属性 - 如果不是,是是语法错误还是只是一个带括号的有效标识符?)都区分大小写吗?
最佳答案
Is there any reason to choose different identifiers for the name and id attributes?
是的。 ID 必须是唯一的,名称不必是。 radio 组成员的名称必须相同,因此他们不能都具有相同的 ID — 实际上,他们可以,但通过 ID 访问元素会有问题。如果您不通过 ID 访问它们,为什么要使用 ID?
Are there any use-cases for which different identifiers are required?
是的,单选按钮。只有一个可以拥有与其名称相同的 ID。但除此之外,几乎没有限制,例如从不给表单控件一个方法的名称或 ID 或表单本身的属性,如“提交”,因为它会屏蔽表单的同名属性。
此外,名称“_charset_
”和“isindex
”是 special .
Are there any differences in syntax? (for example you can use "myarray[123]" for the name attribute and PHP will understand that correctly and create an array, can that also be used in a similar manner for id-attributes in Javascript or CSS - and if not, is that a syntax-error or is it simply a valid identifier with brackets in it?)
是的。 name 的规则和 id属性值相似,但 ID 不能包含空格(name 的一些值很特殊,见上文)。 HTML4 中对 id 属性有更多限制(例如,id 不能以数字开头),但实际上它们并没有在浏览器中实现。
一些在名称和 ID 中有效的字符必须被引用才能用作 CSS 选择器,例如对于:
<div id="d[]">
CSS 选择器是:
#d\[\]
并与选择器 API 一起使用:
#d\\[\\]
(例如 document.querySelector('#d\\[\\]')
。
Are both case-sensitive?
是的。
关于javascript - HTML:name 和 id 属性总是可以使用相同的标识符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26353523/