Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compteur qui bug au deuxième tour

affichage qui bug

Sujet résolu
    14 janvier 2021 à 22:37:18

    Bonjour tout le monde, je me suis amuser à faire un compteur qui ce réinitialise à 1 quand celui ci recommence du à la boucle, mais:

    quand le compteur recommence, l'affichage déconne, la somme final est bien celle attendu et au bout de 3/4 tour l'affichage ce stabilise.

    quelqu'un serais m'aider svp ? :)

    function maBoucle(){
    setTimeout(function(){
    let x = 1.00;
    let z = 0.01;
    						
    						setInterval(function(){
    							 
     if ($('.sleep1').is(":visible")){
    								
    							 
       if(x >= 2 && x <= 2.5 ){
    							 
         z += 0.001;	
    							 
         x += z;
    							 
         xX = x.toFixed(2);
    							 
         $(".sleep2 h3").html("X" + xX);
    							 
       } else { 
    						
    							 
         z = 0.01;
     							 
         x += z;
    							 
         xX = x.toFixed(2);
    							 
         $(".sleep2 h3").text("X " + xX);
    							 
        }
    							
    							
    	} else {
    	  z = 0;
    	  x = 1.00;
    	  $(".sleep2 h3").html("X 1.00");
    	}
    							
    }, 100);
    						
    }, 700);
    maBoucle();
    }

    -
    Edité par Baiiawai 14 janvier 2021 à 22:44:20

    • Partager sur Facebook
    • Partager sur Twitter
      15 janvier 2021 à 12:05:31

      Salut,

      Tu crées un intervalle a répétition avec ta récursion sans jamais utiliser clearInterval.

      En plus de ça, setTimeout est asynchrone dans son fonctionnement, et tu n'attends jamais que ton timeout soit terminé avant de faire ton appel récursif.

      Tu devrais avoir une erreur stack overflow (notamment) dans ta console qui le montre.

      -
      Edité par BrainError 15 janvier 2021 à 12:05:43

      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2021 à 12:22:03

        En plus de ça, setTimeout est asynchrone dans son fonctionnement, et tu n'attends jamais que ton timeout soit terminé avant de faire ton appel récursif.

        peut tu me détailler ce que tu voulais dire ? 

        jai mis un clearinterval mais le problème persiste.

        setTimeout(function(){
        					let x = 1.00;
        					let z = 0.01;
        						
        						var interval = setInterval(compteur, 100);
        						function compteur() {
        							if ($('.sleep1').is(":visible")){
        								
        							if(x >= 2 && x <= 2.5 ){
        							z += 0.001;	
        							x += z;
        							xX = x.toFixed(2);
        							$(".sleep2 h3").html("X" + xX);
        							console.log(xX);
        							} else { 
        						
        							z = 0.01;
        							x += z;
        							xX = x.toFixed(2);
        							$(".sleep2 h3").html("X" + xX);
        							console.log(xX);
        							}
        							
        							
        							} else {
        								z = 0;
        								x = 1.00;
        								$(".sleep2 h3").html("X 1.00");
        							}
        						compteur();
        						 clearInterval(interval);
        						}
        						
        				}, 700);

        -
        Edité par Baiiawai 15 janvier 2021 à 12:28:54

        • Partager sur Facebook
        • Partager sur Twitter

        Compteur qui bug au deuxième tour

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown