Javascript 为什么元素id不能以整数开头?

Javascript 为什么元素id不能以整数开头?,javascript,jquery,Javascript,Jquery,我正在学习jQuery选择器 W3表示“不要以数字开头id属性。这可能会在某些浏览器中导致问题”。我测试了一下,发现它确实不起作用。我想知道这个问题的技术原因是什么 为什么元素id不能以整数开头 他们可以。但是CSS ID选择器不能以数字开头。例如,此HTML: 说明id选择器不能以未替换的数字开头: ID选择器包含一个“数字符号”(U+0023,#),紧跟ID值,ID值必须是CSS标识符 然后: 在CSS中,标识符(包括选择器中的元素名称、类和ID)只能包含字符[a-zA-Z0-9]和ISO1

我正在学习jQuery选择器

W3表示“不要以数字开头id属性。这可能会在某些浏览器中导致问题”。我测试了一下,发现它确实不起作用。我想知道这个问题的技术原因是什么

为什么元素id不能以整数开头

他们可以。但是CSS ID选择器不能以数字开头。例如,此HTML:

说明
id
选择器不能以未替换的数字开头:

ID选择器包含一个“数字符号”(U+0023,#),紧跟ID值,ID值必须是CSS标识符

然后:

在CSS中,标识符(包括选择器中的元素名称、类和ID)只能包含字符
[a-zA-Z0-9]
和ISO10646字符
U+00A0
及更高版本,加上连字符(
-
)和下划线(
它们不能以数字、两个连字符或连字符后跟数字开头。标识符还可以包含转义字符和任何ISO10646字符作为数字代码(请参阅下一项)。例如,标识符
“B&W?”
可以写为
“B\&W\?”
“B\26 W\3F”

(我的重点。)

因此,理论上,您可以通过对CSS选择器中的数字进行转义来解决
#1foo
不起作用的问题。例如:

HTML:

…其中
31
是以十六进制表示的
“1”
的字符代码。实例:

\31 foo{
颜色:绿色;
}
测试1 2 3
实际上,你可以让一个id以一个数字开头,像
document.getElementById
这样的方法就可以了

但是一些旧的页面使用了传统的IE标准,类似于

<div id="hello">World</div>

值得付出努力吗?可能不是。

不仅仅是CSS,它是一个标准。我指出了JavaScript,所以我使用了“标准”一词。。此外,问题中没有包含CSS。。所以我提出了这样的评论:)这是许多人的标准规则languages@T.J.Crowder据我所知,CSS(至少从2开始)可以处理以数字开头的ID或类名,前提是数字是转义的。(也就是说,这是规则解析规则的限制,而不是一个基本的业务规则。)@user2864740是的,就像HTML5一样,在HTML5中,数字ID是完美的。我宁愿说,不要从W3school开始学习web开发。但在主题方面,这不是jQuery规则,而是由CSS/HTML标准驱动的规则。如果您正在寻找有关CSS或JavaScript的任何信息,有大量的资源学校。这是一个良好的开端,他们得到了JavaScript、HTML等文档。。和实际的文档,但有时很难阅读。
#1foo {
    color: green;
}
<div id="1foo">testing 1 2 3</div>
#\31 foo {
    color: green;
}
<div id="hello">World</div>
#123id {color: red;}      /* It doesn't work */

#\31 23id {color: blue;}  /* Oh yeah! */