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 :

De l'utilisation de setTimeout


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Inscrit en
    Juin 2005
    Messages
    81
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 81
    Par d�faut De l'utilisation de setTimeout
    Bonjour,

    j'ai un probl�me qui me prend la t�te depuis quelques heures, je n'arrive pas � utiliser la m�thode SetTimeout.

    Mon probl�me est que je d�sire appeler une fonction avec un param�tre au bout de x millisecondes.

    La fonction javascript
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    function CacheMenu(code)
    {
     
     getElementById(code).style.display=\'none\'; 
     
    }
    Le code php

    onmouseout="setTimeout(CacheMenu(\''.$code_section_child.'\'),5000)"

    Alors j'arrive � faire marcher la fonction mais sans param�tre. LE truc c'est que pour ne plus avoir de messages d'erreur, j'ai trouv� sur le net qu'il faut encadrer les param�tres avec des quotes.
    Ce qui me donne

    onmouseout="setTimeout(\'CacheMenu(\''.$code_section_child.'\')\',\'5000\')"
    Mais du coup mon param�tre PHP n'est pas pass� correctement...

    Merci � celles et ceux qui pourront m'aider.

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onmouseout="setTimeout(function(){CacheMenu(\''.$code_section_child.'\')},5000)"
    Le premier argument de setTimeout est un callback, et non une fonction normale, donc tu ne peux pas lui passer de param�tre directement puisque le moteur de javascript s'attend � une fonction sans argument.

  3. #3
    Membre confirm�
    Inscrit en
    Juin 2005
    Messages
    81
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 81
    Par d�faut
    Arg... La r�ponse que je redoutais.

    J'avais �galement essay� un truc du genre


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onmouseout="CacheMenu(\''.$code_section_child.'\')"
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script language="javascript">
     
    function CacheMenu(code)
    {
     
    setTimeout(\'document.getElementById(code).style.display=none\',\'2000\')
     
    }
     
    </script>
    Sans succ�s non plus (Erreur:code is not defined). Normal je suppose au vu de la disposition des quotes.

    J'ai donc fait d'autres essais :

    setTimeout(document.getElementById(code).style.display=\'none\',\'2000\')
    ->Le setTimeout ne semble pas march� et j'ai l'erreur "none is not defined" au bout de 2 secondes.

    idem sans quotes du tout.

    J'aurai voulu �galement tester un truc du genre

    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
    <script language="javascript">
     
    function CacheMenu(code)
    {
    var super_code=code;
     
    setTimeout("Cache()","2000");
     
    }
     
    function Cache();
    {
     
    document.getElementById(super_code).style.display="none";
    }
     
    </script>
    MAis cette solution pose un probl�me �vident de port�e de variable. J'aurais besoin de d�clarer une variable globale � l'int�rieur d'une fonction. C'est possible en javascript?

    Merci pour ton aide.

  4. #4
    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 : 55
    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
    Tout d'abord, il est pr�f�rable de poster du code (HTML ou JavaScript) g�n�r� plut�t que du PHP, cela permet de d�tecter plus facilement les erreurs de syntaxe et de toutes fa�ons, c'est uniquement ce code-l� qui est interpr�t� par le navigateur.

    Ensuite, concernant le setTimeout, comme indiqu� par DoubleU, cette fonction admet comme 1er argument un callback, que l'on trouve soit sous la forme d'une chaine de caract�re soit une fonction.
    Par exemple, tu peux utiliser une syntaxe du style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    setTimeout(function(){
        // Ici, le corps de ta fonction.
    },2000)
    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

  5. #5
    Membre confirm�
    Inscrit en
    Juin 2005
    Messages
    81
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 81
    Par d�faut
    D�sol� pour le code PHP. Je le ferai plus ^^

    J'avais pas pens� � cette solution. Apr�s quelques bidouilles ca marche bien.
    Merci beaucoup.

    A retenir pour les prochains, pas d'arguments dans le premier param�tre (je m'en doutais un peu car je ne trouvais aucun exemple avec param�tre sur le net, mais ce n'�tait pas dit explicitement).

    A bient�t probablement.

  6. #6
    Membre confirm�
    Inscrit en
    D�cembre 2004
    Messages
    65
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2004
    Messages : 65
    Par d�faut
    Citation Envoy� par Bovino Voir le message
    Tout d'abord, il est pr�f�rable de poster du code (HTML ou JavaScript) g�n�r� plut�t que du PHP, cela permet de d�tecter plus facilement les erreurs de syntaxe et de toutes fa�ons, c'est uniquement ce code-l� qui est interpr�t� par le navigateur.

    Ensuite, concernant le setTimeout, comme indiqu� par DoubleU, cette fonction admet comme 1er argument un callback, que l'on trouve soit sous la forme d'une chaine de caract�re soit une fonction.
    Par exemple, tu peux utiliser une syntaxe du style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    setTimeout(function(){
        // Ici, le corps de ta fonction.
    },2000)
    Et si on souhaite faire un appel r�cursif dans la fonction qui est d�finie � l'int�rieur du setTimeout ? y a une solution ?


    edith : ha ben j'ai trouv�. Je rappelle que mon probl�me concernait l'appel r�cursif d'une fonction avec plusieurs param�tre au travers d'un setTimeout.
    C'est un peu crado mais sachant que mes arguments ne sont pas modifi�s en cours d'ex�cution du script, suffit de les d�clarer en global

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. utilisation d'une tempo (setTimeout)
    Par cortex59 dans le forum G�n�ral JavaScript
    R�ponses: 19
    Dernier message: 26/06/2008, 13h47
  2. De l'utilisation de setTimeout
    Par maximus09 dans le forum G�n�ral JavaScript
    R�ponses: 0
    Dernier message: 06/05/2008, 16h20
  3. Erreur retourn�e si j'utilise setTimeout
    Par pegase29li89 dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 08/02/2008, 18h16
  4. Utilisation de setTimeout avec des classes : BUG!
    Par seb-oulba dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 01/09/2006, 09h43
  5. Compl�ment d'info sur l'utilisation de settimeout
    Par WhyMee dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 18/08/2006, 13h08

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