11548 sujets

JavaScript, DOM et API Web HTML5

bonjour j ai fais des menus en jhavascript avec les calques , mais voila j ai une erreur document.all.style null or not an object j voi vraiment pas ou est l erreur voila mon code

<SCRIPT>

var c_menu1=0;
var c_menu2=0;
var c_menu3=0;
var c_menu4=0;

/*******************************/

var a = setInterval('AffMenu()',100);

/*******************************/

function AffMenu(){


if (c_menu1 == 1){
 document.all['menu1'].style.left = ((document.body.clientWidth-700)/2) + 30 ;
 document.all['menu1'].style.top = 172;
 document.all['menu1'].style.visibility = 'visible';
}
else{ 
 document.all['menu1'].style.visibility = 'hidden';

}
if (c_menu2 == 1){
 document.all['menu2'].style.left = ((document.body.clientWidth-700)/2) + 85 ;
 document.all['menu2'].style.top = 172;
 document.all['menu2'].style.visibility = 'visible';
}
else {
 document.all['menu2'].style.visibility = 'hidden';
}
if (c_menu3 == 1){
 document.all['menu3'].style.left = ((document.body.clientWidth-700)/2) + 330;
 document.all['menu3'].style.top = 172;
 document.all['menu3'].style.visibility = 'visible';
}
else { 
 document.all['menu3'].style.visibility = 'hidden';
}
if (c_menu4 == 1){
 document.all['menu4'].style.left = ((document.body.clientWidth-700)/2) + 267;
 document.all['menu4'].style.top = 172;
 document.all['menu4'].style.visibility = 'visible';
}
else {
 document.all['menu4'].style.visibility = 'hidden';
}
}
/*******************************/
function vireTout()
{

c_menu1=0;
c_menu2=0;
c_menu3=0;
c_menu4=0;
}

</SCRIPT>

merci de m aider
Modifié le 17 Dec 2004 - 11:44
Bienvenue à toi rom123 !

Tu pourrais utiliser le BBCode [ code][/code ] (sans les espaces) pour rendre ton code plus clair ?

Merci !

<edit> Grillé par Igor ! </edit>
Modifié le 15 Dec 2004 - 15:04
voila desolé je savais pas qu'il falait utiliser les balises
j'irais me presenter plus tard , la c'est assez urgent mon probleme de menu Smiley lol
Modifié le 15 Dec 2004 - 15:08
Salut Smiley cligne

Remplaces déjà tout tes document.all['nom'] pas des document.getElementById('nom') car le document all est à la base créer pour IE donc dangereux.

Attention à tes balises aussi il faut écrire
<script type="text/javascript"></script> (en minuscules Smiley cligne )
ok merci j ai fait ce que tu m a dit mais ca n'as pas arranger mon erreur je vois vraiment pas ce qui cloche
par contre ce n est plus la meme erreur maintenant c a la ligne 65 : object required la ligne 65 c celle ci

 document.getElementById('menu3').style.visibility = 'hidden';
Cette erreur signifie sans doute qu'il n'existe pas d'élément (calques ?) avec l'ID "menu3"... maintenant, c'est assez difficile de débugguer du code JS avec IE.

Pour te simplifier la vie, je te conseille de tester ton script avec Firefox et de regarder ce qui s'affiche dans la fenètre de sortie Javascript (menu >> Outils >> Console Javascript)

Si tu code en respectant les normes de l'ECMAScript, il y 99% de chance que ton code soit compatible avec IE Smiley cligne
je viens de verifier , je n'ai pas l erreur avec firefox

edit : ah si en verifiant la console javascript comme tu m a dit j ai 2 erreur :


Errore: document.getElementById("menu4") has no properties

Riga: 73

Errore: document.getElementById("menu2") has no properties

Riga: 57

mais c erreurs ne me disent rien lol
Modifié le 17 Dec 2004 - 11:20
c'est toujours aux memes lignes par ex :

document.getElementById('menu3').style.visibility = 'hidden';

ou

document.getElementById('menu4').style.visibility = 'hidden';


ou

document.getElementById('menu2').style.visibility = 'hidden';


...
J AI TROUVE !!!!!

il falait simplement placé le code tt en bas de la page car il etait placé au debut et donc ne trouvé pas les calques(enfin je crois)
Modifié le 17 Dec 2004 - 11:55
rom123 a écrit :
il etait placé au debut et donc ne trouvé pas les calques(enfin je crois)


C'est un peut ça. Un navigateur commence à interprété le code qu'il reçois avant que celui-ci soit totalement arrivé. Ainsi, si tu place une fonction du type getElementById() et que l'élément en question n'a pas encore été chargé, il va te faire une erreur car il va considéré que l'élément n'existe pas, même s'il arrive plus tard.

Pour eviter ce problème, tu peut soit, comme tu l'a fait, mettre ton code Javascript après les élément à modifier, soit, appeler une fonction qui va faire ce que tu veux au moment ou la page aura fini de se charger (avec l'evenement window.onload)


Smiley smile