getElementById retourne null? [fermé]

document.getElementById('id of div that definately exists') renvoie null.

j'ai initialement chargé le javascript en dernier afin de m'assurer que je n'aurais pas à m'inquiéter de l'événement onload. J'ai aussi essayé d'utiliser l'événement onload. C'est très effrayant. Toute idée ou aide serait grandement appréciée.

33
demandé sur Sheena 2012-01-05 12:32:35

3 réponses

elle peut être causée par:

  1. syntaxe HTML non valide (certaines balises ne sont pas fermées ou erreur similaire)
  2. Id en Double - il y a deux éléments du DOM HTML avec le même ID
  3. peut-être que l'élément que vous essayez d'obtenir par ID est créé dynamiquement (chargé par ajax ou créé par script)?

s'il vous plaît, postez votre code.

41
répondu PanJanek 2012-01-05 08:34:51

faites également attention à la façon dont vous exécutez le js sur la page. Par exemple si vous faites quelque chose comme ceci:

(function(window, document, undefined){

  var foo = document.getElementById("foo");

  console.log(foo);

})(window, document, undefined); 

cela retournera null parce que vous appelleriez le document avant qu'il ne soit chargé.

meilleure option..

(function(window, document, undefined){

// code that should be taken care of right away

window.onload = init;

  function init(){
    // the code to be called when the dom has loaded
    // #document has its nodes
  }

})(window, document, undefined);
47
répondu cameronroe 2014-08-15 15:56:58

il pourrait y avoir plusieurs raisons pour lesquelles document.getElementById ne fonctionne pas

  • vous avez une carte d'identité invalide

    les signes D'identification et de nom doivent commencer par une lettre ([A-Za-z]) et peuvent être suivis de n'importe quel nombre de lettres, chiffres ([0-9]), traits d'Union ("-"), soulignements ("_"), colonnes (":"), et périodes ("."). (ressource: quelles sont les valeurs valides pour l'attribut id en HTML? )

  • vous avez utilisé un identifiant que vous avez déjà utilisé comme <meta> nom dans votre en-tête (par exemple copyright, author... ) il semble bizarre mais m'est arrivé: si vous utilisez IE jeter un oeil à (ressource: http://www.phpied.com/getelementbyid-description-in-ie/ )

  • vous ciblez un élément à l'intérieur d'un cadre ou d'une iframe. Dans ce cas, si l'iframe charge une page dans le même domaine du parent vous devriez viser le contentdocument avant de chercher l'élément (ressource: Appeler un numéro à l'intérieur d'un cadre )

  • vous regardez simplement un élément lorsque le noeud n'est pas effectivement chargé dans le DOM, ou peut-être que c'est une simple faute d'orthographe

je doute que vous ayez utilisé la même carte d'identité deux fois ou plus: dans ce cas, document.getElementById doit retourner au moins le premier élément

7
répondu fcalderan 2017-05-23 12:02:06