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 :

Temporisation en javascript avec Settimeout function switch case


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Temporisation en javascript avec Settimeout function switch case
    Bonjour,
    Je suis débutant et soufaite afficher différents textes ou images dans un popup toutes les x secondes environ
    Une boucle (For ou Do While) est simple (à défaut d'être esthétique) et me conviendrait, mais perturbe le navigateur (MsgBox : un script ralentit l'affichage de votre page. Voulez-vous l'arreter).
    J'ai trouvé sur developpez.net un bon modèle mais qui plante chez moi (script pas complet, appel de fonction ?)
    http://www.developpez.net/forums/d37...on-javascript/

    Pour l'instant, on oublie le popup en target, je cherche simplement à afficher du texte dans la page principale.
    La temporisation est fixe pour plus de simplicité.

    Mais je n'arrive pas à l'adpater chez moi: ca plante.
    Ou est le problème. J'ai essayé un peu tout dans le time out : avec function, avec guillemets simple, guillemet double, ... sans succés.
    Pouvez-vous me dire ce qui fait planter mon 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <HTML>
    <!-- saved from url=(0023)http://www.contoso.com/ -->
    <head>
    <SCRIPT language="Javascript" type="text/javascript">
     
    function ouvrir(url,temps)
    {
    window.open(url, "site", "toolbar=0,location=0,directories=0,status=0, scrollbars=0,resizable=0,menubar=0,top=0,left=0,width=1024,height=768);
    }
     
    function fonctionAEtape(etape)
    {
        switch(etape)
        {
           case 1 :
               // On fait les actions de l'etape 1
               // Et on fait une pause
              document.write("bla bla 1");
    	setTimeout(fonctionAEtape(2),2000);
              break;
           case 2 :
               // On fait les actions de l'etape 2
               // Et on fait une pause
             document.write("bla bla 2");
              setTimeout(fonctionAEtape(3),3000);
              break;
           case 3 :
               // On fait les actions de l'etape 3
               // Et on fait une pause
             document.write("bla bla 3");
              setTimeout(fonctionAEtape(4),2000);
              break;
           case 4 :
               // On fait les actions de l'etape 4
               // Et on c'est fini
             document.write("bla bla 4");
              break;
        }
    }
    </SCRIPT>
    </head>
    <body onload="fonctionAEtape(1)">
    page HTML principale ... bla bla bla bla bla
    </body>
    </HTML>

    Je galère un max, j'ai du perdre 5 heures depuis hier soir en vain.

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 748
    Points
    3 748
    Par défaut
    Bonsoir,

    Il manque les quotes sur fonctionAEtape()

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    Bonsoir,

    Il manque les quotes sur fonctionAEtape()
    Merci du tuyau, mais sur quel fonctionAEtape() ??? Bah oui je débute.
    déjà ça buggue en ligne 41:
    <body onload="fonctionAEtape('1')"> ne fonctionne pas
    <body onload="fonctionAEtape(1)"> ne fonctionne pas également

    Ensuite l'appel de la fonction dans le setimeout c'est ??
    setTimeout("fonctionAEtape('2')",2000);
    ou setTimeout('fonctionAEtape(2)',2000);
    ou setTimeout(fonctionAEtape("2"),2000);
    ou setTimeout(fonctionAEtape('2'),2000);
    ou setTimeout(fonctionAEtape(2),2000);

    Franchement QuickBasic en 1986 c'était plus simple question syntaxe. Et puis les messages d'erreur du debuggueur sont pas explicites.

  4. #4
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 748
    Points
    3 748
    Par défaut
    c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout("fonctionAEtape(2)",2000);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="fonctionAEtape(1)">

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Macmillenium Voir le message
    c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout("fonctionAEtape(2)",2000);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="fonctionAEtape(1)">
    Merci beaucoup.
    Ca fonctionne déjà mieux car il affiche "bla bla bla 1", fait la tempo de 2 secondes, mais plante ensuite : msgbox qui dit Ligne 0 Erreur : Objet Attendu. La fenetre de débogage est vierge.
    Il n'affiche donc ni bla bla 2, ni les suivants.
    J'ai lu quelque part que la fonction Settimeout n'était pas bloquant, et donc que la suite des instructions était executée. Auquel cas, le break est executé, et on sort de la fonction avant que le settimeout ait fait son appel de fonction ?
    Qu'en pensez-vous ?

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Pourquoi le premier code fonctionne alors que le deuxième code ou j'ai changé la ligne alert(n); par document.write(n); ne fonctionne pas. Je n'y comprend plus rien.

    Code qui fonctionne (les msgbox et les chiffres défilent) :
    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
    <HTML>
    <!-- saved from url=(0023)http://www.contoso.com/ -->
    <head>
    <SCRIPT language="Javascript" type="text/javascript">
    function afficher(n)
    {
         alert(n);
         var temps = 1000+Math.floor(n/10);
         setTimeout(function(){ afficher(n+1) }, temps*1000);
    }
    </SCRIPT>
    </head>
    <body onload="afficher(1)">
    page HTML principale ... bla bla bla bla bla
    </body>
    </HTML>
    Code qui ne fonctionne pas (seul le chiffre 1 s'affiche) :
    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
    <HTML>
    <!-- saved from url=(0023)http://www.contoso.com/ -->
    <head>
    <SCRIPT language="Javascript" type="text/javascript">
    function afficher(n)
    {
         document.write(n);
         var temps = 1000+Math.floor(n/10);
         setTimeout(function(){ afficher(n+1) }, temps*1000);
    }
    </SCRIPT>
    </head>
    <body onload="afficher(1)">
    page HTML principale ... bla bla bla bla bla
    </body>
    </HTML>

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/07/2008, 10h21
  2. Switch case avec expression réguliere
    Par neptunia dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2008, 12h51
  3. Exception avec Switch/Case
    Par Gwaedion dans le forum Langage
    Réponses: 3
    Dernier message: 06/12/2007, 09h07
  4. [Système] Probleme avec un switch case!
    Par Death83 dans le forum Langage
    Réponses: 7
    Dernier message: 29/01/2006, 16h28
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37

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