javascript - HTML:name 和 id 属性总是可以使用相同的标识符吗?

标签 javascript html css

基本上,“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/

相关文章:

php - 为什么这个变量不起作用?查询

仅使用 CSS 的 HTML 选项卡界面

html - 背景图片仅适用于 Chrome

javascript - 使用 Javascript 循环创建 html 内容

javascript - 计算器--时钟数字和文本框显示

html - 默认 HTML 字体大小

jquery - 使用 jquery 控制 div 大小

javascript - 根据复选框选择显示图像

css 悬停动画在 ie11 中不起作用。将鼠标悬停在 IE 中不起作用的元素上时的 CSS 过渡

javascript - 如何在基于 JavaScript 的经典 ASP 中生成 Excel 电子表格?