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 :

[while onmouseover]


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut [while onmouseover]
    Une colle a mon avis...

    Une question qui je pense est impossible mais je demande quand meme pour en etre sur

    Est-il possible de faire en sorte de démarrer ET BOUCLER une fonction tant que la souris est au dessus d'un élèment et d'arreter cette boucle si on la retire...

    En fait, ca serait pour faire un truc du genre onmouseover="javascript:loopThisMethod()" onmouseout="javascript:stopLoopingThisMethod()"

    Je reste sceptique si c'est possible!

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    elle doit faire quoi, cette fonction?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    Ele va faire dérouler un par un les élèments d'une liste, en respectant une vitesse constante...

    ca pourrait aussi fonctionner avec tantQueMonBoutonGaucheEstPressé(){je défile}

    je n'aime pas l'autoscrolling a dire vrai car ma liste est dynamique et se regenere a chaque fois qu'elle monte ou descend d'un cran...

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    utilise setInterval pour lancer ton instruction de manière récurrente, tant qu'un flag reste à true;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    Merci, mais pourrais-je avoir plus de précisions la dessus stp

    Je ne vois pas comment utiliser setInterval...

    EDIT : Autant pour moi, google est mon ami

    Donc je fais onMouseOver="javascript:meth=setInterval(maMethode(),4000);" onMouseOut="javascript:ClearTimeOut(meth);"

    Une chose me dérange qd meme... Apparement c'est fait pour afficher une string ce truc, ca marchera si je mets une méthode a la place?

    Je demande parce que je pourrai pas tester avant jeudi

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Par défaut
    Cette string doit contenir le nom d'une fonction...

    Je sais c'est bizarre mais bon...

    Donc c'est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setInterval("maFonction()",4000);
    avec les guillemets (")

    Attention aussi a la différence entre fonction et méthode, meme si en javascript on peut a la limite considérér les fonctions comment des méthode de l'objet document

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    Me revoila...

    Assez impressionnant comme résultat, je ne peux pas faire comme montré ci-dessus, j'ai un code généré assez bizarre... genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onmouseover="javascript:meth=setInterval(mafonction="",2000="")"
    Plus de majuscules ni de parenthese... Rien...

    Alors je cherche un peu et je trouve 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <HTML>
    <head>
    <script>
    <!--
    function Attendre(Duree)
    {
      string="Affiche("+Duree+");";
      a = setTimeout(string,Duree);
    }
     
    function Affiche(Duree)
    {
      alert(Duree/1000+" seconds se sont écoulées");
    }
     
    function Annule()
    {
      clearTimeout(a);
    	alert("Le message ne viendra pas");
    }
     
    function Repete(Duree)
    {
    	string="alert('Hello');";
    	b = setInterval(string,Duree);
    }
     
    function Interrompre()
    {
      clearTimeout(b);
    }
    // -->
    </script>
    </HEAD>
    <BODY>
    <a href="javascript:void()" onClick="Attendre(2000);">
    Afficher le message dans 2 secondes
    </a><BR>
    <BR>
    <a href="javascript:void()" onClick="Attendre(4000);">
    Afficher le message dans 4 secondes
    </a>
    <BR> 
    <a href="javascript:void(0)" onClick="Repete(4000)"; >
    Afficher le message toutes les 4 secondes
    </a>
    <br>
    <a href="javascript:void(0)" onClick="Interrompre()"; >
    Empecher la répétition
    </a>
    <br>
    </BODY>
    </HTML>
    Fonctionne nikel chrome, c'est justement ce que j'ai besoin...Je colle le code dans le mien, et la... Ben rien

    Rien ne se passe, je ne comprends plus rien

  8. #8
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par tyrann
    Rien ne se passe, je ne comprends plus rien
    J'ai pas compris la question... Qu'est ce qui ne fonctionne pas chez toi?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    Ben la methode appellée ne s'execute pas...

    j'ai mis ceci :

    - dans le code html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	document.getElementById("choix_search"+n).innerHTML+="<p onMouseOver=\"javascript:startLoopGoUp()\">UP</p><br>";
    - dans le js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function startLoopGoUp(){
    	methode= "goUp()";
    	loopMeth= setInterval(methode,1000);
    }
     
    function stopLoopGoUp(){
    	clearTimeout(loopMeth);
    }
    Je précise que j'ai bien compris la différence entre méthode et fonction, c'est juste que j'ai toujours préféré ce nom

  10. #10
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par tyrann
    - dans le code html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	document.getElementById("choix_search"+n).innerHTML+="<p onMouseOver=\"javascript:startLoopGoUp()\">UP</p><br>";
    vire le javascript: ça sert à rien. onmouseover en minuscules. Pourquoi est-ce que tu l'ajoutes dynamiquement à ta page? TU as essayer de le mettre en dur dans ta page?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    C'est bon ca fonctionne...

    C'est de ma faute, la confusion a fait que j'ai bien placé entre "" dans setInterval sauf que la il fallait plus puisque c'etait le nom d'une variable

    Ceci explique cela

    Merci pour tous les gars


    @denisC : effectivement ca sert a rien sauf que ca servira au prochain qui ne connait rien au js et qui saura que c'est du js qui est appellé... Et dans le html la casse n'est pas respectée

  12. #12
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par tyrann
    @denisC : effectivement ca sert a rien sauf que ca servira au prochain qui ne connait rien au js et qui saura que c'est du js qui est appellé... Et dans le html la casse n'est pas respectée
    Euh, j'espere que le suivant ne pense pas que c'est une recette de crepes suzettes si il n'y a pas écrit javascript devant...

    Sinon, pour la casse en HTML je suis d'accord, mais en XHTML la casse est importante. Et comme je ne sais pas si tu codes en HTML ou en XHTML

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    Ok bien vu j'avais oublié pour le XHTML

    Sinon, je suis tombé sur une autre tuile

    Ce systeme est bien pratique, seulement, si je reste trop longtemps sur mon élèment déclencheur, alors, je ne sais pour quelle raison, tout le bazar boucle comme si j'appellais plusieurs fois la fonction setInterval et du coup ben je sais plus les arreter!

    Je viens de faire des tests et ma conclusion est la suivante : setInterval plante!

    La preuve est que j'ai fait apparaitre dans un champ dans le document la valeur d'un compteur qui s'incrémente a chaque fois que la méthode contenant setInterval est appellée... Or il s'incrémente pas, donc ca veut bien dire que c'est setInterval qui s'implémente tout seul...

    J'ai fait le test une 2eme fois en deplacant le clearTimeout dans une fonction a part. Ca donne comme résultat qu'on dirait qu'il fait un clearTimeout a l'avance!!! Bref la premiere fonction qui doit etre appellée ne l'est plus ou est arretée tout de suite...

    Je vais devenir fou


  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut
    un peu de news depuis tantot...

    J'arrive a bloquer un peu le systeme de redondance en utilisant un boolean pour savoir si il est deja en train de boucler ou pas et alors en declencher un nouveau ou pas...

    MAIS... J'ai un peu mieux isolé le probleme je pense... Apparement c'est le onMouseOut qui ne veut pas fonctionner convenablement si je reste trop longtemps au dessus...

    Donc faut repasser rapidement au dessus pour l'arreter...

    Je suis toujours pas fou mais ca va arriver

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Par défaut

  16. #16
    Invité de passage
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Par défaut
    euhm , plutot que de creer un nouveau sujet , j'ai preferé écrire là

    j'ai le même probleme que celui cité ci dessus
    mon setInterval boucle (duplication de la fonction appellée) , j'ai l'impression que je l'appelle mal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function MaFonction(pa,ra,met,tres){
     
    	mes actions dans la fonction 
     
            d=setInterval("MaFonction(pa,ra,met,tres)",500); }
    j'ai bien sûr mit une fonction stop() qui contient un " clearInterval(d); " et qui est appellé dans le cas ou la souris n'est plus sur l'objet
    mais rien a faire ... j'en déduit donc que j'ai mal programmé (ce qui ne m'etonnerais pas vu mon niveau)

    mais où ?

Discussions similaires

  1. [CR8.5] Pbm d'affichage dans un While
    Par .:Tieri:. dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 14/07/2004, 10h17
  2. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51
  3. Réponses: 2
    Dernier message: 05/02/2004, 13h58
  4. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20
  5. Réponses: 3
    Dernier message: 25/11/2002, 14h15

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