Używanie queryselectora z identyfikatorami będącymi liczbami
Z tego, co rozumiem, Specyfikacja HTML5 pozwala używać identyfikatorów, które są liczbami takimi jak ten.
<div id="1"></div>
<div id="2"></div>
Mogę uzyskać do nich dostęp za pomocą getElementById
, ale nie za pomocą querySelector
. Jeśli spróbuję wykonać następujące czynności, otrzymuję SyntaxError: Dom Exception 12 w konsoli.
document.querySelector("#1")
Jestem po prostu ciekaw, dlaczego używanie numerów jako identyfikatorów nie działa querySelector
Kiedy Specyfikacja HTML5 mówi, że są one ważne. Próbowałem wielu przeglądarek.
2 answers
Jest ważny, ale wymaga specjalnej obsługi. Stąd: http://mathiasbynens.be/notes/css-escapes
Cyfry wiodące
Jeśli pierwszy znak identyfikatora jest numeryczny, musisz go usunąć na podstawie jego kodu Unicode. Na przykład, punktem kodowym dla znaku 1 jest U + 0031, więc można go uniknąć jako \000031 lub \31 .
Zasadniczo, aby uniknąć dowolnego znaku numerycznego, wystarczy przedrostek \3 i dodać znak spacji ( ). Yay Unicode!
Więc Twój kod skończy się jako (CSS pierwszy, js drugi):
#\31 {
background: hotpink;
}
document.getElementById('1');
document.querySelector('#\\31 ');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-18 13:44:23
Ponieważ chociaż są ważne w specyfikacji HTML5, nie są ważne w CSS, co oznacza "query selector".
Zamiast tego musisz zrobić to: document.querySelector("[id='1']")
, co jest bardzo długie, biorąc pod uwagę, że możesz nadać mu wymowny id jak message1
Czy coś;)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-30 22:08:45