par
Ryle » 21 sept. 2006, 12:06
Ton problème n'était pas d'utiliser des apostrophes ou des guillemets, les deux fonctionnent, mais venait de leur imbrication : si tu mets des guillemets dans un attribut onMouseOut="..." qui est déjà déterminé par des guillemets, le navigateur pensera que la chaine est terminée dès qu'il aura atteint la première paire alors que ce n'est pas le cas.
Entre des guillemets, il te faut donc utiliser des apostrophes pour tes chaines, et inversement, entre des apostrophes, il te faut utiliser des guillemets
Concernant ton problème maintenant : le 1000 que tu spécifies correspond au temps que va attendre le navigateur avant d'effectuer l'action, exprimé en millisecondes. Ainsi, au bout d'une seconde après que tu ais quitté le menu avec ta souris, quoi qu'il arrive il lancera la fonction, même si tu es revenu sur le menu parent.
Il te faut pour éviter cela arrêter le timeout, ce que tu peux faire avec la fonction clearTimeout() en donnant un nom à ton timer :
Code : Tout sélectionner
var xx = setTimeout('montre', 3000); // lance la fonction montre() dans 3 secondes
clearTimeout(xx); // arrête le timer xx, la fonction ne sera pas lancée, quel que soit le temps qui reste
Ton problème n'était pas d'utiliser des apostrophes ou des guillemets, les deux fonctionnent, mais venait de leur imbrication : si tu mets des guillemets dans un attribut onMouseOut="..." qui est déjà déterminé par des guillemets, le navigateur pensera que la chaine est terminée dès qu'il aura atteint la première paire alors que ce n'est pas le cas.
Entre des guillemets, il te faut donc utiliser des apostrophes pour tes chaines, et inversement, entre des apostrophes, il te faut utiliser des guillemets :)
Concernant ton problème maintenant : le 1000 que tu spécifies correspond au temps que va attendre le navigateur avant d'effectuer l'action, exprimé en millisecondes. Ainsi, au bout d'une seconde après que tu ais quitté le menu avec ta souris, quoi qu'il arrive il lancera la fonction, même si tu es revenu sur le menu parent.
Il te faut pour éviter cela arrêter le timeout, ce que tu peux faire avec la fonction clearTimeout() en donnant un nom à ton timer :
[code]var xx = setTimeout('montre', 3000); // lance la fonction montre() dans 3 secondes
clearTimeout(xx); // arrête le timer xx, la fonction ne sera pas lancée, quel que soit le temps qui reste[/code]