Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comptes à rebours JS

setTimeout et IE

Sujet résolu
    17 août 2006 à 14:54:25

    Bonjour,

    J'ai copié une fonction de compte à rebours quelque part sur ce forum, que j'ai adaptée afin qu'elle puisse gérer plusieurs comptes à rebours parallèles (Donc j'ai ajouté des paramètres à la fonction).

    Le problème étant qu'Internet Explorer ne semble pas gérer la méthode setTimeout de la même manière que Firefox, étant donné que le script fonctionne sur l'un mais pas sur l'autre.

    Voici la fonction (Réduite au code intéressant) :

    function rebours(nom_compteur,duree,lien)
    {
        var compteur=document.getElementById(nom_compteur);
        if(duree<=0) //Compte à rebours terminé
        {
            window.location=lien; //On charge la page souhaitée
        }
        else
        {
            //On définit la nouvelle valeur du compteur, en fonction de duree
            res=duree; //Affichage simplifié, la fonction réelle est plus complexe
        }
        compteur.innerHTML=res; //On met à jour l'affichage
        duree=duree-1;
        window.setTimeout(rebours,999,nom_compteur,duree,lien); //On rappelle la fonction 1 seconde plus tard, avec les mêmes paramètres (Sauf durée qui est décrémentée)
    }


    Et, sur la page principale, la fonction est appelée :

    <span class="rebours" id="compteur_1">180</span>
    <script type="text/javascript" language="JavaScript">
    rebours('compteur_1',180,'page.php');
    </script>


    Le span est pré-rempli afin d'avoir un affichage même si le JavaScript est activé, mais il est théoriquement remplacé dès que le script se lance.

    Ce script fonctionne parfaitement bien sous Firefox 1.5
    Malheureusement, il provoque une erreur de script sous Internet Explorer. Et étant donné que mes compétences en JavaScript se limitent à l'adaptation de scripts trouvés ici et là, je ne sais pas comment modifier ce script afin qu'il soit fonctionnel sous Internet Explorer.

    L'erreur se situe au niveau du setTimeout (L'affichage est correctement mis à jour lors du premier appel de la fonction).

    Bref, la question : Comment utiliser la fonction setTimeout pour qu'elle fonctionne, avec des paramètres, correctement sous IE et sous Firefox ?

    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2006 à 19:49:37

      window.setTimeout('rebours("'+nom_compteur+'",'+duree+',"'+lien+'");',999);


      Voila qui devrait aller : la fonction setTimeOut admet (à ma connaissance) que deux arguments : une chaîne de caractère qui représente le bout de script qui sera éxécuté lors de la fin du temps, et le temps en millisecondes. Après, Firefox admet peut-être une autre version, mais il me semble que celle là marche aussi sur IE.
      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2006 à 20:21:43

        Merci, ça marche :p

        J'avais testé quelque chose comme ça, mais j'avais dû oublier les quotes autour des variables, je pense ^^
        • Partager sur Facebook
        • Partager sur Twitter

        Comptes à rebours JS

        × 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