Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compte à rebours : spécifier la fin dans 30 secondes

Sujet résolu
    10 août 2009 à 16:10:46

    Bonjour à tous,

    J'ai créé un quiz pour mon site, mais pour corser un peu la chose (et empêcher la triche) je voudrais qu'il y ait un temps limité. Je sais créer une redirection en HTML mais pour éviter que le joueur ne se fasse surprendre je voudrais que s'affiche un petit compte à rebours en texte sur la page. Malheureusement tous les javascripts que je trouve nécessite de spécifier la date de fin du compte à rebours, or moi je voudrais simplement qu'il décompte automatiquement de 30 secondes à 0 (ou de 1 minute à 0, j'ai pas encore défini le temps exact).

    Voici le script que j'utilise pour l'instant :
    function Rebour()
    	{
    		if (document.getElementById)
    		{
    			Maintenant = new Date;
    			TempMaintenant = Maintenant.getTime();
    			Future = new Date(2009, 7, 26);
    			TempFuture = Future.getTime();
    			DinaHeure = Math.floor((TempFuture-TempMaintenant)/1000);
    			DinaHeure = "" + DinaHeure;
    			if (DinaHeure <= 0)
    				DinaHeure = "0";
    			document.getElementById("comptarebour").innerHTML=DinaHeure;
    		}
    		temporebour = setTimeout("Rebour()", 1000)
    	}
    window.onload=Rebour;
    


    Il met à jour un <span> dans le corps de la page, et fonctionne très bien quand on spécifie une date. J'ai essayé de le modifier en définissant TempFuture=TempMaintenant+30 mais sans succès. Auriez-vous une astuce pour moi, car je suis à court d'idée !

    pioneer
    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2009 à 16:20:49

      function start_rebour() {
              var tmps = (new Date()).getTime() + 30000;
              Rebour(tmps);
      }
      
      function Rebour(TempFuture) {
      	var Maintenant = new Date();
      	var TempMaintenant = Maintenant.getTime();
      	var DinaHeure = Math.floor((TempFuture-TempMaintenant)/1000);
      	if (DinaHeure <= 0) {
      		DinaHeure = 0;
      	}
      	document.getElementById("comptarebour").innerHTML = DinaHeure;
      	
      	if (DinaHeure > 0) {
      		setTimeout(function() { Rebour(TempFuture); }, 1000);
      	}
      }
      
      window.onload = start_rebour;
      



      Un petit tour sur le tuto "Bonne pratique en js" (surtout ça, ça et ça) ne ferait pas de mal
      • Partager sur Facebook
      • Partager sur Twitter
        10 août 2009 à 16:40:03

        Merci beaucoup Tiller, ta solution fonctionne. :)

        Le script de départ était récupéré sur un site Internet, et comme j'ai commencé à suivre le tuto javascript du SdZ, je me demandais pourquoi il n'y avait pas de "var" devant les noms de variables ni d'accolades après le deuxième "if". Maintenant j'ai la réponse, c'est parce qu'ils ne respectent pas les bonnes pratiques ! :colere2:^^
        • Partager sur Facebook
        • Partager sur Twitter

        Compte à rebours : spécifier la fin dans 30 secondes

        × 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