SetTimeout

Résolu
Atorina Messages postés 22 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 5 janvier 2005 - 2 août 2004 à 09:25
Atorina Messages postés 22 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 5 janvier 2005 - 2 août 2004 à 16:06
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

Atorina Messages postés 22 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 5 janvier 2005 1
2 août 2004 à 16:06
Merci ça à l'air d'aller mieux :)
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 août 2004 à 10:15
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]]
0
Atorina Messages postés 22 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 5 janvier 2005 1
2 août 2004 à 11:26
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 août 2004 à 12:55
clearTimeout
avec o minuscule ( je sais c'est pénible
cette différence majuscules/minuscules ... )
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Atorina Messages postés 22 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 5 janvier 2005 1
2 août 2004 à 14:19
Merci beaucoup :D
0
Atorina Messages postés 22 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 5 janvier 2005 1
2 août 2004 à 14:59
Erg y a plus d'erreur de script mais j'ai l'impression que le clear timeout ne fait rien
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 août 2004 à 15:48
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]]
0
Rejoignez-nous