2010-11-14 13 views
0

Pourquoi quand je fais un alert de la valeur (voir ci-dessous) il renvoie null? Quand un élément avec cet ID existe?Pourquoi mon élément est-il nul?

// make reference to divs 
var countdown_timer = document.getElementById("countdown_timer"); 
var countdown_image = document.getElementById("countdown_image"); 

// For element manipulation 

if (type == 'image') { 
    var element = countdown_image; 
} else if (type == 'timer') { 
    var element = countdown_timer; 
} 

alert(countdown_timer); 

Le div est comme ci-dessous ..

<div class="timer" id="countdown_timer"></div> 
+5

Assurez-vous que vous appelez 'document.getElementById' * après * l'élément concern a été analysé et inséré dans le DOM. – Gumbo

+0

Cela l'a fait merci! :) – Brett

+0

duplication possible de [Pourquoi jQuery ou une méthode DOM telle que \ 'getElementById \' ne trouve pas l'élément?] (Http://stackoverflow.com/questions/14028959/why-does-jquery-or-a- dom-method-tel-comme-getelementbyid-not-find-the-element) – Bergi

Répondre

2

Il est possible que le javascript est en cours d'exécution avant que les éléments de votre page ne sont pas chargés, donc le sélecteur ne trouve pas quoi que ce soit. Votre javascript est-il au-dessus du tag <body>? Essayez de le mettre après </body> et voyez comment cela fonctionne pour vous.

Une autre solution consiste à faire:

window.onload = function() { 
//put all your JS here 
} 
+0

Ouais ..... J'appelais le javascript dans la page, dans la section body, mais au dessus des éléments ..... le déplaçait en dessous d'eux et ça marche! :) – Brett

1
onload = function() { 
// put you code here 
} 
0

Votre appel à document.getElementById a besoin d'être après le balisage pour la div.

<div class="timer" id="countdown_timer"></div> 
<script type="text/javascript"> 
var countdown_timer = document.getElementById("countdown_timer"); 
... 
</script> 

Alternativement, vous pouvez utiliser l'événement window.onload, ce qui serait la meilleure solution.

+0

Yep .... Je l'ai arrangé comme ça juste avant que je vois votre réponse en passant par les autres réponses haha ​​:) – Brett