J'essaie d'obtenir l'élément avec getElementById (), mais il renvoie null même si l'élément existe. Qu'est-ce que je fais mal?
<html>
<head>
<title>blah</title>
<script type="text/javascript">
alert(document.getElementById("abc"));
</script>
</head>
<body>
<div id="abc">
</div>
</body>
Vous devez mettre cela dans un événement document
load
. Le DOM n'est pas arrivé à abc
au moment où le script est exécuté.
Votre script s'exécute avant le chargement du DOM. Pour résoudre ce problème, vous pouvez placer votre code dans le window.onload
fonctionne comme ceci:
window.onload = function() {
alert(document.getElementById("abc"));
};
Une alternative consiste à placer votre script
juste avant la fermeture </body>
tag.
Si vous ne voulez pas vous attacher à l'événement de chargement, placez simplement votre script au bas du corps, afin qu'il s'exécute à la fin.
<html>
<head>
<title>blah</title>
</head>
<body>
<div id="abc">
</div>
<script type="text/javascript">
alert(document.getElementById("abc"));
</script>
</body>
</html>
En effet, le script s'exécute avant le rendu de la page.
Pour preuve, ajoutez cet attribut à la balise body:
<body onload="alert(document.getElementById('abc'));" >
Mais cela n'existe pas, pas à ce stade du HTML. Les documents HTML sont analysés de haut en bas, tout comme les programmes s'exécutent. La meilleure solution consiste simplement à mettre votre balise de script en bas de la page. Vous pouvez également attacher votre JavaScript à l'événement onload.