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 :

Fonction récursive avec setTimeout pour simuler une boucle avec delay.


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2023
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Fonction récursive avec setTimeout pour simuler une boucle avec delay.
    Bonjour. J'ai mon programme qui envoie sur différentes pages web contenant une question. Pour cela, j'utilise une fonction récursive et setTimeout (5secondes avant de changer d epage web). Le problème je tombe directement sur la page 3 (cm1n3 sur mon prog).
    Les progs.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
    <head>
        <title> Calcul mental </title>
        <link rel="stylesheet" href="milancss.css">
     
    </head>
    <body>
        <h1> Calcul mental n°1 : calculs de pourcentages </h1>
        <p>3 calculs vont se succeder</p>
        <button id="mybutton">Approve</button>
        <script src="presentationsti.js"></script>
     
    </body>
    </html>

    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
    function suivant(x){
        if(x==='0'){self.location.href = "cm1n1.html";//Ne passe au suivant que dans 5s
            setTimeout(suivant(x+1), 5000);}        
        else if (x==='1'){self.location.href = "cm1n2.html";//Ne passe au suivant que dans 5s
            ;setTimeout(suivant(x+1), 5000);}  
        else{self.location.href = "cm1n3.html";
       }
    }
     
     
    let element = document.getElementById("mybutton");
    element.addEventListener('click', e => {
    suivant(0);
     
    }    
    )

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 440
    Points : 4 942
    Points
    4 942
    Par défaut
    Bonjour,

    soit if(x=='0') seulement avec deux signes égales
    ou bien if(x==0) toujours avec les deux signes égales mais sans les apostrophes autour du nombre
    ou bien if(x===0) avec 3 signes égales et sans les apostrophes autour du nombre.

    les 3 signes égales a===b vérifient que les valeurs et aussi les types des deux variables sont identiques, et donc '0'===0 retourne false, car le type de '0' est une chaine de caractère et 0 est un entier.

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    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 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Tu peux aussi simplifier ta fonction en demandant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.location.href = `cm1n${x+1}.html`

Discussions similaires

  1. Calcul de complexité d'une fonction récursive avec boucle for
    Par Alphakiwi dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/05/2019, 16h31
  2. Problème pour arréter une boucle avec un bouton
    Par Zizook dans le forum Tkinter
    Réponses: 17
    Dernier message: 17/03/2014, 13h26
  3. Réponses: 26
    Dernier message: 22/01/2014, 03h10
  4. [ctypes]Problème pour simuler une combinaison de touche avec ctypes
    Par Estudiante dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 29/09/2009, 17h46
  5. Réponses: 2
    Dernier message: 11/05/2009, 19h04

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