据我了解,HTML5规范使您可以使用ID这样的数字。
<div id="1"></div> <div id="2"></div>
我可以使用,getElementById但不能使用querySelector。如果尝试执行以下操作, 则会 在控制台中收到 SyntaxError:DOM异常12 。
getElementById
querySelector
document.querySelector("#1")
我只是很好奇,为什么querySelector当HTML5规范说数字有效时,将数字用作ID 无效。我尝试了多种浏览器。
它是有效的,但是需要一些特殊的处理。从这里:
前导数字
如果标识符的第一个字符是数字,则需要根据其Unicode代码点对其进行转义。例如,字符1的代码点为U+0031,因此可以将其转义为\000031或\ 31。
基本上,要转义任何数字字符,只需在其前面加上\ 3并附加一个空格字符()。是的Unicode!
因此,您的代码最终将显示为(CSS首先,JS第二):
#\31 { background: hotpink; } document.getElementById('1'); document.querySelector('#\\31 ');