L'utilisation de querySelector avec des Identifiants qui sont des nombres
Ce que je comprends de la spec HTML5 vous permet d'utiliser les Id qui sont des nombres comme ça.
<div id="1"></div>
<div id="2"></div>
Je peux accéder à ces amende à l'aide getElementById
mais pas avec querySelector
. Si j'essaie de faire ce qui suit-je obtenir SyntaxError: DOM Exception 12 dans la console.
document.querySelector("#1")
Je suis juste curieux de savoir pourquoi à l'aide de numéros d'Id ne fonctionne pas querySelector
lors de la spec HTML5 dit que ce sont valides. J'ai essayé plusieurs navigateurs.
- Je ne pense pas que la spec HTML5 dit qu'ils sont valides. Je vais re-vérifier...
- Ils sont valables
- Tant pis, selon validator.w3.org/check elle est valable pour l'utilisation des numéros. Peut-être que les navigateurs modernes n'ont pas assez mis en œuvre la norme?
Vous devez vous connecter pour publier un commentaire.
Il est valide, mais nécessite une manutention spéciale. À partir d'ici: http://mathiasbynens.be/notes/css-escapes
De sorte que votre code constituerait (CSS d'abord, JS seconde):
#\\31 0
- vous pouvez vous référer à mothereffingcssescapes.comParce que pendant qu'ils sont valides dans la spec HTML5, ils ne sont pas valides dans le CSS, qui est ce "requête sélecteur de" signifie.
Au lieu de cela, il vous suffit de faire ceci:
document.querySelector("[id='1']")
, ce qui est très longue haleine compte tenu que vous pourriez lui donner un significative ID commemessage1
ou quelque chose 😉J'ai besoin d'une approche qui a été automatisé. Un récent changement signifiait l'id de valeurs utilisées ont été plus simple de caractères alphabétiques et inclus de nombres et de caractères spéciaux.
J'ai fini par utiliser
CSS.escape
: https://developer.mozilla.org/en-US/docs/Web/API/CSS/escapeJS:
D'abord, c'est le cas d'échec:
JS:
HTML:
Et maintenant, à l'aide de
CSS.escape
:JS:
HTML:
Voir comment il correctement les changements de montrer
After
, démontrant le sélecteur travaillé!À partir de la documentation du W3C Sélecteur d'attribut de la syntaxe
Ainsi, des chiffres ou des chaînes alphanumériques avec les principaux chiffres ne sont pas considérées comme un identificateur valide.
Si vous utilisez un générateur d'identifiants de l'utilitaire pour la génération d'un identifiant, vous pourriez vous retrouver avec alpha id numériques avec de grands chiffres.
Une solution rapide serait soit à omettre les chiffres à partir de la GRAINE du générateur( si il peut être modifié ) ou de toujours ajouter une chaîne à l'identifiant généré.