11548 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,

J'ai besoin de vous !

Je me torture depuis un long moment à trouver l'erreur dans mon javascript mais rien à faire, je bloque . Le voici :

//  ------------------------------------------
//  TESTE DU NAVIGATEUR
//  ------------------------------------------
window.onload = testerNavigateur();

function testerNavigateur(){
	objetXHR = creationXHR();
	if(objetXHR == null){
		document.getElementById("button").disabled = true;
		var erreurNavigateur = "Erreur Navigateur : Création d'objet XHR impossible";
		remplacerContenu("info", erreurNavigateur);
		document.getElementById("info").style.visibility = "visible";
	}
	//document.getElementById("button").onclick = jouer();
}


Ne sachant pas du tout d'ou viens l'erreur (à part firebug qui me dit que l'objet getElementById est null) je ne sais pas si vous avez besoin de plus pour m'aider... Sinon il n'y a qu'à demander .

Merci d'avance pour votre aide

PS : je précise que j'ai bien vérifier que l'id existe et correspond bien...
J'ai résumé mon problème dans une page un peu plus simple :

Voici le javascript :

function ouvrir(){
	document.getElementById("contain").style.display = "block";
}

document.getElementById("button").onclick = ouvrir;


Et voici le html :

<body>
	<div id="header">
    	<input type="button" value="Ouvrir" id="button" />
    </div>
    <div id="contain">
    </div>
    <div id="footer">
    </div>
</body>


Le principe est qu'au chargement de la page le "contain" est en display : none et que lorsque l'on clique sur le ouvrir il passe en block pour apparaitre...

Firebug m'indique que l'objet getElementById est null. Je précise que lorsque je mets l'attribut onclick au bouton pour enclencher ouvrir() cela fonctionne...

Je précise aussi au cas ou que mon script est dans un fichier .js externe que j'ai appelé dans ma page html.
Modifié par fullmon (02 Aug 2010 - 19:44)
Hello fullmon et bienvenue, Smiley smile

je suppose que ça ne fonctionne pas car tu as placé ton élément SCRIPT dans le HEAD et que par conséquent l'arbre DOM n'est pas encore créé.

Il suffit de placer cet élément juste avant </body> ou alors d'utiliser window.onload (ou plus exactement un équivalent).


Edit: en repassant par ici l'erreur de ton premier code est qu'il faut écrire
window.onload = testerNavigateur;
sans parenthèses.
Modifié par Heyoan (02 Aug 2010 - 22:20)