2010-04-13 8 views
15

J'ai utilisé document.GetElementById avec succès, mais depuis un certain temps je ne peux plus le faire fonctionner. pages anciennes où je l'ai utilisé encore du travail, mais les choses aussi simples que cela:Pourquoi document.GetElementById renvoie-t-il une valeur nulle?

<html> 
<head> 
<title>no title</title> 
<script type="text/javascript"> 
document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
</script> 
</head> 
<body> 
<div id="ThisWillBeNull"></div> 
</body> 
</html> 

me donnent « document.getElementById (» parsedOutput «) est nul » tout le temps maintenant. Peu importe si j'utilise Firefox ou Chrome ou les extensions que j'ai activées ou les en-têtes que j'utilise pour le html, c'est toujours nul et je ne trouve pas ce qui pourrait être faux.

Merci de votre contribution =)

Répondre

36

La page est rendue de haut en bas. Votre code s'exécute immédiatement après son analyse. Au moment de l'exécution, la div n'existe pas encore. Vous devez l'inclure dans une fonction window.onload.

24

Essayez ceci:

<script type="text/javascript"> 
    window.onload = function() { 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 
1

Le navigateur va exécuter le script dès qu'il trouve. À ce stade, le reste du document n'a pas encore été chargé - il n'y a encore aucun élément avec cet identifiant. Si vous exécutez ce code après cette partie du document est chargée, cela fonctionnera correctement.

4

Sans window.onload votre script n'est jamais appelé. Javascript est un langage basé sur les événements, donc sans un événement explicite comme onload, onclick, onmouseover, les scripts ne sont pas exécutés.

<script type="text/javascript"> 
    window.onload = function(){ 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 

événement onload:

L'événement se déclenche de charge à la fin du processus de chargement de documents. À ce stade, tous les objets dans le document sont dans le DOM, et toutes les images et les sous-cadres ont terminé le chargement.

https://developer.mozilla.org/en/DOM/window.onload

1
<script type="text/javascript"> 
    window.onload += function() { 
    document.getElementById("ThisWillBeNull").innerHTML = "Why is this null?"; 
    } 
</script> 

Utilisez += pour attribuer plus eventHandler s à l'événement OnLoad du document.

+0

Cela n'a rien fait pour moi. – Mixxiphoid

Questions connexes