Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compte à rebours s'affiche sous... Chrome & Opéra

...mais pas sur IE, Mozilla et Safari... why ?

    9 août 2010 à 16:26:08

    Bonjour à tous,

    Voilà, comme le titre l'indique, je ne comprends pas pourquoi je n'arrive pas à afficher ce comptre à rebours sur d'autres navigateur que Opéra.
    Si quelqu'un avait une idée...

    Voilà le code :
    <script type="text/javascript">
    function Rebour(id, sdate){
    var date1 = new Date();
    var date2 = new Date (sdate);
    var sec = (date2 - date1) / 1000;
    var n = 24 * 3600;
    if (sec > 0){
    j = Math.floor (sec / n);
    h = Math.floor ((sec - (j * n)) / 3600);
    mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
    sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
    document.getElementById(id).innerHTML = "Il vous reste<br/>"+ j +" Jour(s) "+ h +" Heure(s) "+ mn +" Minute(s) "+ sec + " Seconde(s) ";
    }
    else if(sec <= 0){
    document.getElementById(id).innerHTML = 'La vente est terminée !<br/>Merci de bien vouloir rafrâchir cette page <a href=index.php>ici</a>';
    return;
    }
    setTimeout(function() { Rebour(id,sdate); },1000);
    }
    window.onload = function(){
    decompte();
    Rebour("compteur", "<?php echo $data_produit['produit_date_fin_vente'];?>" );
    };
    </script>
    


    L'affichage se fait simplement ainsi :
    <div id="compteur"></div>
    
    • Partager sur Facebook
    • Partager sur Twitter
      9 août 2010 à 23:27:50

      Salut, c'est quoi cette fonction decompte() définie nulle part ?

      Et pour déclarer plus proprement tes variables, utilise une seule fois var et des virgules :

      var date1 = new Date(),
          date2 = new Date (sdate),
          sec = (date2 - date1) / 1000,
          n = 24 * 3600; // Sans oublier le point virgule final
      
      • Partager sur Facebook
      • Partager sur Twitter
        10 août 2010 à 7:24:47

        La fonction decompte est définie mais n'aurait pas du être copié dans mon post.
        Elle est liée à une autre fonction que je n'ai pas copié ici.

        J'ai bien modifié ma mise en variable mais aucun changement. Ma fonction rebour fonctionne très bien sous opéra, chrome mai pas sur IE, mozilla et safari...

        Par contre, je vais sans doute modifier cette fonction pour faire appel à l'heure du serveur.
        On verra si j'arrive à faire quelque chose de correct et si celà, du coup, peut fonctionner sur tous les navigateurs.

        Mon code avec les deux fonctions (rebour et decompte), sachant que decompte ne pose pas de probleme et que rebour ne fonctionne pas partout :

        <script type="text/javascript">
        function decompte(){
        	var	compte = <?php echo $data_produit['produit_prix_debut']; ?>,
        	timer,
        	compt = document.getElementById("compt");
        	
        	compt.style.color = '#990000';
        	compt.innerHTML = 'Ce produit valait ' + compte + ',00 €uros'; // J'AI DU RAJOUTER CA !
        	setTimeout(function(){ // Avec un délai de 5000ms, on exécute ce qui suit
        		timer = setInterval(function(){ // On répète ce qui suit toues les 10ms :
        			compte--;
        			compt.style.color = ''; // Et ça redevient noir.
        			compt.style.color = '#990000';
        			compt.innerHTML = 'Ce produit valait ' + compte + ',00 €uros';
        			if (compte <= 0){
        				clearInterval(timer);
        				setTimeout(decompte,2000); // On relance la fonction;
        				compt.style.color = '#669933';
        				compt.innerHTML = 'Ce produit vaut ' + compte + ',00 €uros !';
        			}
        		},1);
        	},2000);
        };
        
        function rebour(id, sdate){
        var date1 = new Date(),
            date2 = new Date (sdate),
            sec = (date2 - date1) / 1000,
            n = 24 * 3600; // Sans oublier le point virgule final
        if (sec > 0){
        j = Math.floor (sec / n);
        h = Math.floor ((sec - (j * n)) / 3600);
        mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
        sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
        document.getElementById(id).innerHTML = "Il vous reste<br/>"+ j +" Jour(s) "+ h +" Heure(s) "+ mn +" Minute(s) "+ sec + " Seconde(s) ";
        }
        else if(sec <= 0){
        document.getElementById(id).innerHTML = 'La vente est terminée !<br/>Merci de bien vouloir rafrâchir cette page <a href=index.php>ici</a>';
        return;
        }
        setTimeout(function() { rebour(id,sdate); },1000);
        }
        window.onload = function(){
        rebour("compteur", "<?php echo $data_produit['produit_date_fin_vente'];?>" );
        decompte();
        };
        </script>
        
        • Partager sur Facebook
        • Partager sur Twitter

        Compte à rebours s'affiche sous... Chrome & Opéra

        × 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