Partage
  • Partager sur Facebook
  • Partager sur Twitter

Intervalle de temps entre 2 fonctions

déclencher une fonction x secondes après l'autre

Sujet résolu
    6 mars 2010 à 20:17:48

    Hello amis du zero ! ;)
    Je suis débutant en js et j'ai écrit ce code grâce à diverses infos pêchées un peu partout :D
    Le but est que quand un visiteur clique sur une l'image, la fonction ouvrir() se déclenche. Puis, après 7 secondes on active redirect() pour rediriger le visiteur sur une autre page.
    La fonction openbox() fonctionne très bien et doit afficher un cadre par dessus la page sur lequel il est écrit "chargement en cours".
    Mais le code ne fonctionne pas. Le petit cadre ne s'ouvre plus et la redirection n'a pas lieu :( . Quelqu'un peut m'aider ?
    voici le code:
    function redirect
    {
    window.location.replace("gallerie.html");
    clearInterval(laPause);
    }
    function ouvrir()
    {
    openbox('Chargement en cours...', 1);
    var laPause = setInterval(redirect, 7000);
    }
    


    et voici le code de l'image:
    <img src="images/entrer_gallerie.jpg" width="307" height="49" onclick="ouvrir();"/>
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 mars 2010 à 20:44:48

      Salut, je crois qu'il faut que tu mettes redirect entre guillemets, de cette manière:
      setInterval("redirect()", 7000);
      


      Sinon moi j'utilise d'habitude setTimeOut et pas setInterval, je sais pas si ça change qqchose..
      • Partager sur Facebook
      • Partager sur Twitter
        6 mars 2010 à 21:23:15

        Nan il a fait juste.
        1) Il a oublié les () pour redirect
        2) il utilise setInterval alors qu'il faut setTimeout (une fois)
        Juste :
        function redirect()
        {
        window.location = "gallerie.html";
        }
        function ouvrir()
        {
        openbox('Chargement en cours...', 1);
        var laPause = setTimeout(redirect, 7000);
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          6 mars 2010 à 23:05:31

          Merci ça marche :D
          Mais j'ai encore besoin de vous... :-°
          J'avais oublié de dire que le cadre comporte un bouton annuler qui active la fonction closebox() qui ferme le cadre. Par conséquent il faut empêcher la redirection si l''utilisateur clique sur annuler. J'ai donc amélioré le code mais pour changer il ne fonctionne pas... :(

          var validation = true;
          function fermer()
          {
          	closebox();
          	validation = false;
          }
          function redirect()
          {
          	if validation = true
          	{
          	window.location = "gallerie.html";
          	}
          }
          function ouvrir()
          {
          	openbox('Chargement en cours...', 1);
          	var laPause = setTimeout(redirect, 7000);
          }
          


          Merci d'avance
          • Partager sur Facebook
          • Partager sur Twitter
            6 mars 2010 à 23:18:47

            var laPause = null;
            function fermer()
            {
            	closebox();
            	clearTimeout(laPause);
            }
            function redirect()
            {
            	window.location = "gallerie.html";
            }
            function ouvrir()
            {
            	openbox('Chargement en cours...', 1);
            	laPause = setTimeout(redirect, 7000);
            }
            

            tout simplement en utilisant clearTimeout ;)
            • Partager sur Facebook
            • Partager sur Twitter
              7 mars 2010 à 15:25:56

              Ca fonctionne ! La grande classe ! :D
              Merci à tous de votre aide ;)
              J'ai amélioré le code pour que si on clique sur "précédent" dans gallerie.html le code de redirection ne se relance pas.
              Code final:
              var laPause = null;
              function fermer()
              {
              	closebox();
              	clearTimeout(laPause);
              }
              function redirect()
              {
              	window.location = "gallerie.html";
                      fermer();
              }
              function ouvrir()
              {
              	openbox('Chargement en cours...', 1);
              	laPause = setTimeout(redirect, 7000);
              }
              
              • Partager sur Facebook
              • Partager sur Twitter

              Intervalle de temps entre 2 fonctions

              × 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