Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : menu dynamique [ clearInterval() ] [ Framework / Atlas ] (mimagyc)

mardi 14 octobre 2008 à 13:23:32 | menu dynamique [ clearInterval() ]

mimagyc

Bonjour,

Je souhait mettre un place un simple agrandissement en largeur(width) d'une balise <li> et la reduire lorsque la souris sors de la balise.

J'utilise un setInterval , mon probleme est lorsque la balise s'agrandit, elle ne s'arrete pas , elle continue en boucle, selon mon code, arrive a 100, elle s'arrete or la elle continue en boucle a redefinir la largeur a 100.

le code HTML :
[code]
<ul id="menu">
<!-- Menu -->

<a href="index.php?action=home"><li id="home" class="menu" onmousemove="menu_mouse('home','p')" onmouseout="menu_mouse('home','m')" style="width:60px;">Home&nbsp;&nbsp;</li></a>

<li id="jeu" class="menu" onmousemove="menu_mouse('jeu','p')" onmouseout="menu_mouse('jeu','m')" style="width:60px;">le jeu&nbsp;&nbsp;</li>

<li id="infos" class="menu" onmousemove="menu_mouse('infos','p')" onmouseout="menu_mouse('infos','m')" style="width:60px;">Infos&nbsp;&nbsp;</li>

<li id="forum" class="menu" onmousemove="menu_mouse('forum','p')" onmouseout="menu_mouse('forum','m')" style="width:60px;"><a href="forums/">Forum&nbsp;&nbsp;</a></li>

<!-- FIN Menu -->
</ul>
[/code]

et le code javascript :
[code]
var timer;
function menu_mouse(id,sens) {
    timer = setInterval("menu('"+id+"','"+sens+"')",20);
}
 
function menu(id,sens) {
actuel = $(id).offsetWidth;
   
   
    if (sens == "p" && actuel <100) {
        suite = actuel+1;
        $(id).style.width =suite+"px";
        actuel = suite;
    }
    else if (sens == "m" && actuel > 60){
        suite = actuel-1;
        $(id).style.width =suite+"px";
        actuel = suite;
    }
    else if (sens == "m" && actuel <61 ) {
        clearInterval(timer);
    }
    else if (sens == "p" && actuel >99) {
        clearInterval(timer);
    }
    else {
        clearInterval(timer);
    }
}
[/code]

Je ne comprend pas pourquoi le clearinterval ne fonctionne pas 

Merci.
ps: lien : http://mimaro.free.fr/test/

mercredi 15 octobre 2008 à 19:09:57 | Re : menu dynamique [ clearInterval() ]

PetoleTeam

Membre Club
Bonjour,
Attention les navigateurs ne gére pas setInterval de la même façon, donc il faut bien prendre gare à ce que l'on fait...

Je vois plusieurs soucis à ton script

Tu utilises l'événement onmousemove sur tes LI, soit mais cela signifie que dés que tu bouge ta souris sur le LI tu d'éclenches la fonction menu_mouse qui créer un nouveau timer sans détruire celui en cours, donc celui en cours continu et lorsque tu fait clearInterval(timer); c'est le dernier référencé que tu kill.

Peut être pas clair aussi je te propose pour te rendre compte d'afficher les infos dans ta page
<script language="javascript">
//------------------
function debug(txt_){
var Obj = document.getElementById("D_INFO");
if( Obj){
  var szDebug = Obj.innerHTML;
  Obj.innerHTML = txt_ + szDebug;
}
}
var timer;
//----------------------------
function menu_mouse( id, sens){
  clearInterval(timer);
  timer = setInterval("menu('"+id+"','"+sens+"')",20);
}
//--------------------
function menu(id,sens){
  var actuel = parseInt(document.getElementById(id).offsetWidth);

  debug(sens +" -> " +actuel +" timer = " + timer +"<br>");

  if (sens == "p" && actuel <100) {
    actuel ++;
    document.getElementById(id).style.width = actuel +"px";
  }
  else if (sens == "m" && actuel > 60){
    actuel --;
    document.getElementById(id).style.width = actuel +"px";
  }
  else if (sens == "m" && actuel <61 ) {
    debug( " KILL Timer -> " + timer +"<br>");
    clearInterval(timer);
  }
  else if (sens == "p" && actuel >99) {
    debug( " KILL Timer -> " + timer +"<br>");
    clearInterval(timer);
  }
  else {
    debug( " KILL Timer -> " + timer +"<br>");
    clearInterval(timer);
  }
}
</script>

ajoute juste entre les balises BODY ceci
<div id="D_INFO"></div>
en prétant l'oeil tu verras que des timer ne sont pas killer.
;O)

mercredi 15 octobre 2008 à 19:57:11 | Re : menu dynamique [ clearInterval() ]

mimagyc

Merci pour ta réponse!

Alors apres avoir mis en place ton code, j'ai une erreur dans la console de FF :

Avertissement : Une fin de valeur pour la propriété était attendue, mais « ; » a été trouvé.  Erreur d'analyse de la valeur pour la propriété « width ».  Déclaration abandonnée.
Fichier Source : http://127.0.0.1/Eno2/index.php?action=home
Ligne : 0



... donc bon je comprend pas , mais je pense avoir compris ce que tu voulais me faire voir .je vai plancher dessus demain.

je te tien au courant.

Merci.

mercredi 15 octobre 2008 à 20:04:32 | Re : menu dynamique [ clearInterval() ]

PetoleTeam

Membre Club
Peut être plutôt un problème avec le CSS, manque unité px par exemple ????
Autre chose utilises de préférence onmouseover que onmousemove...
;O)

mercredi 15 octobre 2008 à 21:53:26 | Re : menu dynamique [ clearInterval() ]

mimagyc

Merci!!,
j'ai reussi a faire ce que je voulai, derniere chose!,

lorsque je met la souris sur le menu et que je fait glisser la souris sur les autre menu, le premeir menu a arreter de bouger ... comment faire ,

faire une fonction menu_mouse pour chaque menu? avec un timer pour chaque menu?

voici le code en fonctionnement :

var timer;
function menu_mouse(id,sens) {
    clearInterval(timer);
    timer = setInterval("menu('"+id+"','"+sens+"')",10);
}




function stop_() {
    clearInterval(timer);   
}
 var sens;
function menu(id,sens,ti) {
   
actuel = parseInt($(id).offsetWidth);
   
   
    if (sens == "p" && actuel <=100) {
        suite = actuel+1;
        $(id).style.width =suite+"px";
        $('test').innerHTML = actuel+"+";
    }
    else if (sens == "m" && actuel >= 60){
        suite = actuel-1;
        $(id).style.width =suite+"px";
        $('test').innerHTML = actuel+"-";
    }
    else if (sens == "m" && actuel <=60 ) {
        stop_()
    }
    else if (sens == "p" && actuel >=100) {
        //clearInterval(timer);
        //$('test').innerHTML = actuel;
        stop_()
    }
    else {
        //clearInterval(timer);
        stop_()
    }
}



http://mimaro.free.fr/test2/

Merci ;)


mercredi 15 octobre 2008 à 22:05:46 | Re : menu dynamique [ clearInterval() ]

mimagyc

J'ai reussi!!!!

voici le code :

/* menu */
var timer1;
var timer2;
var timer3;
var timer4;
function menu_mouse(id,sens) {
    if (id == "home") {    clearInterval(timer1);    timer1 = setInterval("menu('"+id+"','"+sens+"')",10); }
    else if (id == "jeu") {    clearInterval(timer2);    timer2 = setInterval("menu('"+id+"','"+sens+"')",10); }
    else if (id == "infos") {    clearInterval(timer3);    timer3 = setInterval("menu('"+id+"','"+sens+"')",10); }
    else if (id == "forum") {    clearInterval(timer4);    timer4 = setInterval("menu('"+id+"','"+sens+"')",10); }
}

function stop_(id) {
    if (id == "home") {    clearInterval(timer1);}
    else if (id == "jeu") {    clearInterval(timer2);}
    else if (id == "infos") {    clearInterval(timer3);}
    else if (id == "forum") {    clearInterval(timer4);}
}


function menu(id,sens) {
actuel = parseInt($(id).offsetWidth);
   
   
    if (sens == "p" && actuel <=100) {
        suite = actuel+1;
        $(id).style.width =suite+"px";
        //$('test').innerHTML = actuel+"+";
    }
    else if (sens == "m" && actuel >= 60){
        suite = actuel-1;
        $(id).style.width =suite+"px";
        //$('test').innerHTML = actuel+"-";
    }
    else if (sens == "m" && actuel <=60 ) {
        stop_(id)
    }
    else if (sens == "p" && actuel >=100) {
        stop_(id)
    }
    else {
        stop_(id)
    }
   
   
}

/* FIN menu */



C'est un peu crassout mais bon ...

Merci :)


mercredi 15 octobre 2008 à 22:45:12 | Re : menu dynamique [ clearInterval() ]

PetoleTeam

Membre Club
Réponse acceptée !
faire une fonction menu_mouse pour chaque menu
ou alors créer une classe...
C'est un peu crassout mais bon
ça marche c'est l'essentiel, mais je ne doute pas que tu nous pondra la classe menu_glissant à l'occasion...
...bonne continuation...
;O)



Cette discussion est classé dans : code, sens, nbsp, actuel, clearinterval


Répondre à ce message

Sujets en rapport avec ce message

[DEPLACE]code pour defilement [ par mike501 ] Bonjour, j ai un code qui me permet d afficher une barre de news mais le souci c est que le defilement est horyzontale et je le voudrai verticale comm le javascript... [ par fubullrot31305 ] salut tout le monde ! voila, j'ai trouver ceci en prenant le code source d'une page :     & Quel Code pour se résultat [ par jeanlululu ] Bonjour.Merci pour l'aide que vous pourrez nous apporter.Voila ma question. Je désire trouver le code javascript pour obtenir le résultat suivant:Je d redimention d'un tableau [ par BirD ] salut tout le monde,voila, pour un site, je dois faire un sorte que quand je clique sur un tableau, il prenne une taille que je définit.Le code que j' decoder code [ par lesmedicaids ] bonjour je voudrais savoir que deviens ce code " %20un/\'i%2 0!icode&nbsp;&nbsp; "d'avance merci Pb De traduction [ par overbrave ] Salut a vousJ'ai recuperer le code d'un petit chat allemandLorsque je modifie le texte pour le passer en francaisCela ne fonctionne que lorsque je ne Formulaire : remplissage auto du nom de la commune à partir d'un Code Postal [ par jovicy ] Bonjour,J'ai un formulaire dans lequel l'utilisateur dois remplir les champs suivants : - Code postal - Code Insee - Commune - Département - Région - Erreur dans le code ! Help please ! Je deviens fou ! [ par Goldoorak ] Bonjour, j'ai un message d'erreur dans mon code javascript mais je n'arrive pas du tout à voir d'où vient le problème ! Quelqu'un pourrait-il me donn variable javascript envoyée dans un formulaire vers page php [ par DzinVolt_Original ] Bonjour a tous, je voudrais envoyer une variable Javascript dans un formulaire pour pouvoir l'utiliser ensuite dans une page en PHP voici le code java je suis débutante!MeTTrE Un FoRuM SuR SOn SiTe!!!!!!! [ par cloclo555 ] Bonjour pouve


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.