IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Menu dynamique clearInterval


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mimagyc
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut Menu dynamique clearInterval
    Bonjour,

    je fait un menu dynamique , J'arrive a agrandir ca largeur, mais lorsque je veut le reduire, ca fonctionne pas ..

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function menu_mouse(id,sens) {
    	timer = setInterval("menu('"+id+"','"+sens+"')",10);
    }
     
    function menu(id,sens) {
    actuel = $(id).offsetWidth;
     
     
    	if (sens == "+" && actuel<150) {
    		suite = actuel+1;
    		$(id).style.width = suite+"px";
    	}
    	else if (sens == "-" && actuel > 50)
    	{
    		suite = actuel-1;
    		$(id).style.width = suite+"px";
    	}
    	else
    	{
    		clearInterval("timer");
    	}
    }
    J'ai l'impression que le clearInterval("timer"); ne fonctionne pas .


    Un lien : http://mimaro.free.fr/Eno2/

    Merci.

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077

  3. #3
    Membre éclairé Avatar de mimagyc
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    Merci, mais j'ai encore un souci, mon menu s'elargie bien mais apres il ne se réduit pas .. je ne sait pas pourquoi:

    voici le code dans la page html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <li id="home" class="menu" onmousemove="menu_mouse('home','+')" onmouseout="menu_mouse('home','-')" style="width:50px;">Home&nbsp;&nbsp;</li>
    Merci.

  4. #4
    Membre éclairé Avatar de mimagyc
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    Si vous aller voir sur le lien, j'ai l'impression que lorsque l'on enlève la souris du "<li>" le bloc réduit et s'agrandit très vite, comme si le clearInterval(timer); ne fonctionnais pas .
    et c'est même le cas, j'ai mis un alert comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    function menu_mouse(id,sens) {
    	var timer = setInterval("menu('"+id+"','"+sens+"')",10);
    }
     
    function menu(id,sens) {
    actuel = $(id).offsetWidth;
     
     
    	if (sens == "+" && actuel<=150) {
    		suite = actuel+1;
    		$(id).style.width =suite+"px";
    	}
    	else if (sens == "-" && actuel >= 50)
    	{
    		suite = actuel-1;
    		$(id).style.width =suite+"px";
    	}
    	else
    	{
    		clearInterval(timer);
    		alert('marche');
    	}
    }
    et je n'ai pas d'alert a s'afficher ...

    merci.
    PS: la console d'erreur de firefox : timer is not defined
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	{
    		clearInterval(timer);
    		alert('marche');
    	}

    ---------------------------------------------------

    Voici mon denrier essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    function menu(id,sens) {
    actuel = $(id).offsetWidth;
    var actif = 1;
     
    	if (actif == 1) {
     
    	if (sens == "+" && actuel<150) {
    		suite = actuel+1;
    		$(id).style.width =suite+"px";
    		var timer = setInterval("menu('"+id+"','"+sens+"')",10);
    		actif = 1;
    	}
    	else if (sens == "-" && actuel > 60)
    	{
    		suite = actuel-1;
    		$(id).style.width =suite+"px";
    		var timer = setInterval("menu('"+id+"','"+sens+"')",10);
    		actif = 1;
    	}
    	else
    	{
    		clearInterval(timer);
    		actif = 0;
    		alert('marche');
    	}
    	}
    }
    il m'affiche un alert en continue, le clearInterval(timer); ne fonctionne pas ...

    merci.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Normal, ta variable timer n'est pas globale, elle n'existe donc que dans la fonction menu_mouse(). Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    var timer;
    function menu_mouse(id,sens) {
    	timer = setInterval("menu('"+id+"','"+sens+"')",10);
    }
     
    function menu(id,sens) {
    actuel = $(id).offsetWidth;
     
     
    	if (sens == "+" && actuel<=150) {
    		suite = actuel+1;
    		$(id).style.width =suite+"px";
    	}
    	else if (sens == "-" && actuel >= 50)
    	{
    		suite = actuel-1;
    		$(id).style.width =suite+"px";
    	}
    	else
    	{
    		clearInterval(timer);
    		alert('marche');
    	}
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé Avatar de mimagyc
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    En effet, ca fonctionne, mais je dois garder la souris sur la <li> pour qeu ca fonctionne, un simple passage ne suffit pas :http://mimaro.free.fr/Eno2/

    eEt la souris dois bouger ... comment faire?

    une petite mise a niveau du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    var timer;
    function menu_mouse(id,sens) {
    	timer = setInterval("menu('"+id+"','"+sens+"')",10);
    }
     
    function menu(id,sens) {
    actuel = $(id).offsetWidth;
     
     
    	if (sens == "+" && actuel<150) {
    		suite = actuel+1;
    		$(id).style.width =suite+"px";
    	}
    	else if (sens == "-" && actuel > 50)
    	{
    		suite = actuel-1;
    		$(id).style.width =suite+"px";
    	}
    	else
    	{
    		clearInterval(timer);
    		//alert(actuel);
    	}
    }
    HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <li id="home" class="menu" onmousemove="menu_mouse('home','+')" onmouseout="menu_mouse('home','-')"style="width:60px;"><a href="index.php?action=home">Home&nbsp;&nbsp;</a></li>
    <li id="jeu" class="menu" onmousemove="menu_mouse('jeu','+')" onmouseout="menu_mouse('jeu','-')" style="width:60px;">le jeu&nbsp;&nbsp;</li>
    <li id="infos" class="menu" onmousemove="menu_mouse('infos','+')" onmouseout="menu_mouse('infos','-')" style="width:60px;">Infos&nbsp;&nbsp;</li>
    <li id="forum" class="menu" onmousemove="menu_mouse('forum','+')" onmouseout="menu_mouse('forum','-')" style="width:60px;"><a href="forums/">Forum&nbsp;&nbsp;</a></li>
    Merci.

    PS : Plus d'erreur dans la console.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Free Pascal] Intégrer des valeurs dans un menu dynamique
    Par boullery dans le forum Free Pascal
    Réponses: 16
    Dernier message: 30/03/2005, 17h04
  2. Créer un sous-menu dynamiquement
    Par PurL dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/09/2004, 10h31
  3. [JSP]menu dynamique en jsp
    Par laouedjahmed dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/03/2004, 10h50
  4. Menu dynamique sous Flash MX
    Par dens63 dans le forum Flash
    Réponses: 7
    Dernier message: 29/10/2003, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo