Il est écrit que TypeError: document.getElementById ( ... ) est null

Bien que j'ai poussé un paramètre getElementById je me demande où est-ce 'est null' erreur vient-il?

TypeError: document.getElementById(...) is null
[Break On This Error]   

document.getElementById(elmId).innerHTML = value;

Line 75  

en plus de cela, je me demande pourquoi le titre et le temps ne se sont pas affichés à moins que je clique sur une de ces photos de playlist?

19
demandé sur Tahtakafa 2012-12-15 00:06:09

7 réponses

Tous ces résultats dans null:

document.getElementById('volume');
document.getElementById('bytesLoaded');
document.getElementById('startBytes');
document.getElementById('bytesTotal');

vous devez faire une vérification nulle dans updateHTML comme ceci:

function updateHTML(elmId, value) {
  var elem = document.getElementById(elmId);
  if(typeof elem !== 'undefined' && elem !== null) {
    document.getElementById(elmId).innerHTML = value;
  }
}
21
répondu bits 2012-12-14 20:16:23

assurez-vous que le script est placé dans le bas de l'élément BODY du document que vous essayez de manipuler, pas dans L'élément tête ou placé avant aucun des éléments que vous souhaitez pour "obtenir".

cela n'a pas d'importance si vous importez le script ou s'il est en ligne, la chose importante est le placement. Vous n'avez pas à placer la commande dans une fonction non plus; bien que ce soit une bonne pratique, vous pouvez simplement l'appeler directement, cela fonctionne très bien.

36
répondu Olemak 2014-08-01 20:31:23

cela signifie cet élément avec id passé getElementById() n'existe pas.

8
répondu Marat Tanalin 2012-12-14 20:11:15

Vous pouvez utiliser JQuery pour s'assurer que tous les éléments des documents sont prêts avant de lancer le script côté client

$(document).ready(
    function()
    {
        document.getElementById(elmId).innerHTML = value;
    }
);
7
répondu amar 2014-01-12 20:14:15

dans votre code, vous pouvez trouver cette fonction:

// Update a particular HTML element with a new value
function updateHTML(elmId, value) {
  document.getElementById(elmId).innerHTML = value;
}

plus Tard, vous appelez cette fonction avec plusieurs paramètres:

updateHTML("videoCurrentTime", secondsToHms(ytplayer.getCurrentTime())+' /');
updateHTML("videoDuration", secondsToHms(ytplayer.getDuration()));
updateHTML("bytesTotal", ytplayer.getVideoBytesTotal());
updateHTML("startBytes", ytplayer.getVideoStartBytes());
updateHTML("bytesLoaded", ytplayer.getVideoBytesLoaded());
updateHTML("volume", ytplayer.getVolume());

le premier paramètre est utilisé pour le" getElementById", mais les éléments avec ID" bytesTotal"," startBytes"," bytesLoaded "et" volume " n'existent pas. Vous aurez besoin de les créer, puisqu'ils retourneront null.

2
répondu MarcoK 2012-12-14 20:17:11

j'ai eu le même message d'erreur. Dans mon cas j'ai eu div multiple avec même id dans une page. J'ai renommé l'autre id du div utilisé et corrigé le problème.

confirmez donc si l'élément:

  • existe avec id
  • ne pas avoir de doublons avec id
  • confirmez si le script s'appelle
2
répondu Pradeep Kumar Prabaharan 2017-06-12 06:55:33

j'ai le même problème. C'est juste que le script javascript se charge trop vite--avant que L'élément HTML ne soit chargé. Donc le navigateur renvoie null, puisque le navigateur ne peut pas trouver où est l'élément que vous aimez manipuler.

1
répondu The Mr. Totardo 2015-12-09 04:11:08