SetTimeout [Résolu]

Signaler
Messages postés
22
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
5 janvier 2005
-
Messages postés
22
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
5 janvier 2005
-
Bonjour,

J'ai fait un code qui, lorsqu'on fait un clic droit, affiche un menu personnalisé. J'ai voulu faire un setTimeout pour que le menu se ferme au bout d'un certain temps. Seulement si je ferme le menu avant que le temps expire et que je rouvre le menu ensuite, la temporisation marche encore sur le nouveau menu. Ce qui fait que desfois lorsque j'ouvre un menu, il se ferme tout de suite après. J'ai tenté de faire un clearTimeout mais cela ne marche pas. Ma variable nrml qui recupere le resultat de setTimeout reste toujours undefined.

var nrml; // contient le resultat du setTimeout()

//balise div qui contient ensuite ce qui va être afficher dans le menu
document.writeln('
');
document.writeln('
');

// Masquage du menu lorsqu'on clic gauche ou droit sur la page
function masque_menu(nrml) {
var liste = document.getElementsByTagName("div");
for (i=0;i<liste.length;i++)
{
if (liste[i].name=="tata")
{
liste[i].style.visibility="hidden";
}
}

if (nrml)
{window.alert(nrml);
window.clearTimeOut(nrml);}
else
window.alert(nrml);

}

// Remise a l'etat normal des intitules (position 'off')
function normal() {
var nrml;
if ( event.srcElement.className == "intitules" ) {
event.srcElement.style.backgroundColor = "";
event.srcElement.style.color = "black";
nrml=window.setTimeout("masque_menu()",2000);
}
return nrml;
}

Dans masque_menu, j'ia essayer de faire :

if (nrml != undefined)
{window.alert(nrml);
window.clearTimeOut(nrml);}

mais ça ne marche pas

7 réponses

Messages postés
22
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
5 janvier 2005
1
Merci ça à l'air d'aller mieux :)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,
function normal() {
var nrml;

donc la variable nrml est interne à la
function normal est n'est pas utilisable
ailleurs.
=> définir cette variable en global,
hors de toute fonction.
} // fin function masque_menu
var nrml; // ici par exemple
function normal() {
...

Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
22
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
5 janvier 2005
1
Merci,
le alert() affiche maintenant autre chose que undefined mais ma modification à générer une erreur . il me dit qu'il y a une erreur au niveau du :

window.clearTimeOut(nrml);

"Cet objet ne gère pas cette proprièté ou cette méthode"

Dans mon menu il y a un sous menu qui permet de fermer le menu. Il appel en fait masque_menu. Lorsque je fais fermé, cela génère cette erreur. Mais lorsque j'attend la temporisation, il n'y a pas d'erreur.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
clearTimeout
avec o minuscule ( je sais c'est pénible
cette différence majuscules/minuscules ... )
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
22
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
5 janvier 2005
1
Merci beaucoup :D
Messages postés
22
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
5 janvier 2005
1
Erg y a plus d'erreur de script mais j'ai l'impression que le clear timeout ne fait rien
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
comme on n'a pas tous les éléments
ça va être plus difficile de répondre.
une remarque pourquoi nrml en paramètre,
par exemple menu(nrml), alors que défini en
global ? ça doit déjà perturber pas mal ...
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]