Obtenir cette erreur sur Safari 10
Cela se produit lorsqu'un nom est donné à un const qui est exactement identique à un id
de n'importe quel élément de la page.
const abc = document.querySelector("#abc"); //err
const abz = document.querySelector("#abc"); //no err
var abc = document.querySelector("#abc"); //no err
Y a-t-il une raison à cela?
Je sais que vous pouvez accéder aux éléments via window.abc, est-ce que cela fait partie du pourquoi?
Tester:
<!doctype html>
<html><body>
<div id="alpha"></div>
<script>
const alpha = document.querySelector('#alpha');
console.log(alpha);
</script>
</body></html>
C'est apparemment un problème pour Safari de déclarer une variable let/const qui partage le même nom qu'un attribut id sélectionné. J'ai eu quelques variables déclarées avec const comme vous et j'ai eu la même erreur. Changé pour laisser et toujours eu. Changé en var et cela a fonctionné.
Cela doit être lié à ce bug webkit
Entre-temps, vous pouvez remplacer const
par var
ou modifier le nom de votre variable (par exemple: _alpha).
La réponse de Nathan est correcte. Au lieu d'utiliser var, je viens de changer mon const pour avoir un cas différent de celui de l'id. Alors...
const Abc = document.querySelector("#abc");
Encore hacky, juste une autre option.