web-dev-qa-db-fra.com

Uncaught Typeerror: impossible de lire la propriété 'innerHTML' de null

Quelqu'un peut-il expliquer quelles sont ces erreurs?

Uncaught TypeError: impossible de lire la propriété 'innerHTML' de null

Voir sur mon website C'est la ligne qui cause l'erreur:

var idPost=document.getElementById("status").innerHTML;

Merci

6
Davix Ponze
var idPost=document.getElementById("status").innerHTML;

L'élément 'status' n'existe pas dans votre page Web. 

Ainsi, document.getElementById ("status") renvoie null. Bien que vous ne puissiez pas utiliser la propriété innerHTML de NULL.

Vous devriez ajouter une condition comme celle-ci:

if(document.getElementById("status") != null){
    var idPost=document.getElementById("status").innerHTML;
}

J'espère que cette réponse peut vous aider. :)

21
jianbo.zheng

Mettre à jour:

La question ne demande pas de jQuery. Alors faisons-le sans jquery:

document.addEventListener("DOMContentLoaded", function(event) { 
    //Do work
});

Notez que cette méthode ne fonctionnera pas sur IE8.

Ancienne réponse:

Vous appelez ce script avant que DOM ne soit prêt. Si vous écrivez ce code dans la méthode $ (function ()) de jquery, cela fonctionnera.

20
egiray

Si vous devez idéalement mettre en évidence le code à l'origine de l'erreur et l'afficher dans votre question, l'erreur est due au fait que vous essayez d'obtenir le code HTML interne de l'élément 'status':

var idPost=document.getElementById("status").innerHTML;

Cependant, l'élément 'status' n'existe pas dans votre code HTML - ajoutez l'élément nécessaire ou modifiez l'ID que vous tentez de localiser pour qu'il pointe vers un élément valide.

4
James Shuttler

lancez le code après votre structure html dans l'instruction body 

    <html>
    <body>
    <p>asdasd</p>
    <p>asdasd</p>
    <p>asdasd</p>
    <script src="myfile.js"></script>
    </body>
    </html>
4
agalal designs

J'avais un problème similaire, mais j'avais l'identifiant existant et, comme dit egiray, j'appelais DOM avant qu'il ne soit chargé et la console Javascript affichait la même erreur.

window.onload = (function(){myfuncname()});

et ça commence à fonctionner

4
Kel_Ebek

Si le script se trouve dans l’en-tête de votre document HTML, le navigateur n’a pas encore créé le corps de celui-ci, peu importe son contenu éventuel (le même résultat se produit si votre script se trouve dans le fichier HTML élément). Lorsque votre variable tente de trouver document.getElementById ("status"), elle n'existe pas encore et renvoie donc la valeur null. Lorsque vous utilisez ensuite la variable ultérieurement dans votre code, la valeur initiale (null) est utilisée et non la valeur actuelle, car rien n'a mis à jour la variable.

Je ne voulais pas déplacer mon lien de script hors de la tête HTML, c'est pourquoi j'ai plutôt fait ceci dans mon fichier JS:

var idPost //define a global variable
function updateVariables(){
    idPost = document.getElementById("status").innerHTML; //update the global variable
}

Et ceci dans le fichier HTML:

<body onload="updateVariables()">

Si vous avez déjà une fonction onload en place, vous pouvez simplement y ajouter la ligne supplémentaire ou appeler la fonction.

Si vous ne souhaitez pas que la variable soit globale, définissez-la localement dans la fonction que vous essayez d'exécuter et assurez-vous qu'elle n'est pas appelée avant le chargement complet de la page.

3
Catherine Gracey
//Run with this HTML structure
<!DOCTYPE html>
<head>
    <title>OOJS</title>

</head>
<body>
    <div id="status">
    </div>
    <script type="text/javascript" src="scriptfile.js"></script>
</body>
</html>
0
Swaraj ghosh