为HTML元素创建id属性时,该值有哪些规则?


当前回答

HTML5:

它消除了对id属性的额外限制(请参见此处)。剩下的唯一要求(除了文件中的唯一要求)是:

该值必须至少包含一个字符(不能为空)它不能包含任何空格字符。


HTML5之前:

ID应匹配:

[A-Za-z][-A-Za-z0-9_:.]*

必须以A-Z或A-Z字符开头可以包含-(连字符)、_(下划线)、:(冒号)和。(期间)

但我们应该避免:和。因为:

例如,一个ID可以被标记为“a.b:c”,并在样式表中被引用为#a.b:cc,但除了作为元素的ID之外,它还可以表示ID“a”、类“b”、伪选择器“c”。最好避免混淆,远离使用。和:总计。

其他回答

HTML5

请记住,ID必须是唯一的,即文档中不能有多个元素具有相同的ID值。

HTML5中关于ID内容的规则是(除了唯一性之外):

此属性的值不能包含空格。[...]虽然HTML5中取消了这一限制,但为了兼容性,ID应该以字母开头。

这是关于ID的W3规范(来自MDN):

任何字符串,具有以下限制:必须至少有一个字符长不能包含任何空格字符以前版本的HTML对ID值的内容设置了更大的限制(例如,它们不允许ID值以数字开头)。

更多信息:

W3-全局属性(id)MDN属性(id)

墙可以是:[a-z]、[a-z]、[0-9]、[*_:-]

它用于HTML5。。。

我们可以用任何标签添加id。

根据HTML 4规范:

ID和NAME标记必须以字母([a-Za-z])开头,后面可以是任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。

一个常见的错误是使用以数字开头的ID。

实际上,许多网站使用以数字开头的id属性,尽管这在技术上是无效的HTML。

HTML5草案规范放宽了id和name属性的规则:它们现在只是不透明的字符串,不能包含空格。

救命,我的Javascript坏了!

每个人都说ID不能重复。

在除FireFox之外的所有浏览器中都试用过

<div id=“ONE”></div><div id=“ONE”></div><div id=“ONE”></div><脚本>document.body.append(document.querySelectorAll(“#ONE”).length,'DIV!')document.body.append('in',typeofONE)console.log(一);//全局变量!!</script>

解释

在世纪之交,微软拥有90%的浏览器市场份额,

并实施从未标准化的浏览器行为:

1.为每个ID创建全局变量

2.为重复ID创建数组

所有后来的浏览器供应商都复制了这种行为,否则他们的浏览器将不支持旧网站。

2015年左右,Mozilla删除了2。来自FireFox和1。仍然有效。

所有其他浏览器仍然支持1。和2。

我每天都使用它,因为键入ONE而不是document.querySelector(“#ONE”)帮助我更快地创建原型;我不在生产中使用它。