[javascript et CSS] setTimeout et style
velociraptor
-
Serge_La Messages postés 408 Statut Membre -
Serge_La Messages postés 408 Statut Membre -
Bonjour,
Je sollicite votre aide pour un problème plutôt orienté javascript, mais qui concerne aussi les propriétés de style.
Voilà, j'ai un menu déroulant et je me sert de javascript pour afficher ou non les onglets. Quand la sourie quitte l'onglet, il disparaît. Jusque là, rien de compliquer... Maintenant je veux rajouter un délais avant que l'onglet disparaisse, histoire d'avant une navigation plus facile, et là, c'est le drame !
Je me suis dis qu'un setTimeout serait approprié, mais au final, l'onglet apparaît et ne disparaît pas ! J'ai essayé sous IE comme firefox, même résultat... La console javascript de firefox ne me dis absolument rien, pratique pour le débogage...
Donc je me tourne vers vous !
voilà mon code :
voilà, merci pour votre aide,
Alexandre
Je sollicite votre aide pour un problème plutôt orienté javascript, mais qui concerne aussi les propriétés de style.
Voilà, j'ai un menu déroulant et je me sert de javascript pour afficher ou non les onglets. Quand la sourie quitte l'onglet, il disparaît. Jusque là, rien de compliquer... Maintenant je veux rajouter un délais avant que l'onglet disparaisse, histoire d'avant une navigation plus facile, et là, c'est le drame !
Je me suis dis qu'un setTimeout serait approprié, mais au final, l'onglet apparaît et ne disparaît pas ! J'ai essayé sous IE comme firefox, même résultat... La console javascript de firefox ne me dis absolument rien, pratique pour le débogage...
Donc je me tourne vers vous !
voilà mon code :
// détection de la base du menu en fonction du navigateur
// on fixe la variable l dessus
if(document.getElementById("Menu"))
var l=document.getElementById("Menu").getElementsByTagName('LI');
else
var l=document.getElementById("MenuIe").getElementsByTagName('LI');
for ( var n=0; n<l.length; n++ )
{
l[n].unselectable="on"; /* pour faire plus propre : "non sélectionnable", ne fonctionne pas avec FF ? */
if( l[n].getElementsByTagName('UL') && l[n].getElementsByTagName('UL').length>0 )
{
// evenement onmouseover marche bien
l[n].onmouseover = function()
{
this.getElementsByTagName('UL')[0].style.visibility="visible";
}
// le problème est ici :
// la première ligne devrait marcher...
// le code en commentaire marche par contre, mais sans délais...
l[n].onmouseout = function()
{
setTimeout("this.getElementsByTagName('UL')[0].style.visibility='hidden';", 1000);
//this.getElementsByTagName('UL')[0].style.visibility="hidden";
}
}
}
voilà, merci pour votre aide,
Alexandre
A voir également:
- [javascript et CSS] setTimeout et style
- Style word - Guide
- Nom pour facebook stylé - Guide
- Style d'écriture a copier coller - Guide
- Telecharger javascript - Télécharger - Langages
- Chat style coco - Accueil - Réseaux sociaux
1 réponse
Il s'agit d'un problème de guillemets encore une fois. Et le "this" ne sait plus qui il est.
ppk, en hollande, explique en détail dans son site internet comment utiliser "this". Fais une recherche.
Ce serait plus simple si tu nommais la fonction qui fait disparaître et que tu l'appelais avec ton onmouseout. Par exemple:
Function cachemenu(myelement) {
myelement.getElementsByTagName('UL')[0].style.visibility="hidden";
}
et
l[n].onmouseout = function() {
setTimeout(cachemenu('this'), 1000);
}
ou quelque chose comme ça. La syntaxe dans mon setTimeout n'est pas parfaite.
Serge.
ppk, en hollande, explique en détail dans son site internet comment utiliser "this". Fais une recherche.
Ce serait plus simple si tu nommais la fonction qui fait disparaître et que tu l'appelais avec ton onmouseout. Par exemple:
Function cachemenu(myelement) {
myelement.getElementsByTagName('UL')[0].style.visibility="hidden";
}
et
l[n].onmouseout = function() {
setTimeout(cachemenu('this'), 1000);
}
ou quelque chose comme ça. La syntaxe dans mon setTimeout n'est pas parfaite.
Serge.