Использование querySelector с идентификаторами, которые являются числами
из того, что я понимаю, спецификация HTML5 позволяет использовать идентификаторы, которые являются такими числами.
<div id="1"></div>
<div id="2"></div>
Я могу получить доступ к этим штраф с помощью getElementById
а не с querySelector
. Если я попытаюсь сделать следующее, Я получаю SyntaxError: исключение DOM 12 в консоли.
document.querySelector("#1")
мне просто любопытно, почему использование чисел в качестве идентификаторов не работает querySelector
когда спецификация HTML5 говорит, что они действительны. Я пробовал несколько браузеров.
2 ответа:
это допустимо, но требует специальной обработки. Отсюда: http://mathiasbynens.be/notes/css-escapes
цифры
Если первый символ идентификатора является числовым, вам нужно будет экранировать его на основе его кодовой точки Unicode. Например, кодовая точка для символа 1-это U+0031, поэтому ее следует экранировать как \000031 или \31 .
в принципе, чтобы избежать любого числового символа, просто префикс его с \3 и добавьте пробел (). Ура Юникод!
Так что ваш код будет в конечном итоге как (CSS во-первых, JS во-вторых):
# { background: hotpink; } document.getElementById('1'); document.querySelector('#\31 ');