Plusieurs comptes à rebours sur la même page html

Plusieurs comptes à rebours sur la même page html - HTML/CSS - Programmation

Marsh Posté le 08-04-2009 à 19:35:12    

La théorie semble fonctionnée, j'ai bien mes différents comptes à rebours correspondants à mes diverses dates d'échéance mais le côté pratique, à savoir le compte à rebours actif (que mes secondes, minutes, etc... défilent) ne fonctionne pas. Mes chiffres reste fixes, sauf si je fais un "refresh" de la page, il m'actualise la seconde mais ce n'est pas dynamique comme un compte à rebours en temps réel.
 
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 = j +"J "+ h +"H "+ mn +"min "+ sec + "sec ";
}
setTimeout ("Rebour('"+id+"')", 1000);
}
window.onload = function(){
Rebour("div1","Apr 11 21:00:00 2009" );
Rebour("div2", "Apr 25 21:00:00 2009" );
Rebour("div3", "May 9 21:00:00 2009" );
Rebour("div4", "May 23 21:00:00 2009" );
Rebour("div5", "Jun 20 21:00:00 2009" );
};
-->
</script>

 
 
Auriez-vous une idée ?

Reply

Marsh Posté le 08-04-2009 à 19:35:12   

Reply

Marsh Posté le 08-04-2009 à 21:31:00    

Voilà c'est réglé !!
 
Il fallait modifier cela :
 
setTimeout(function() { Rebour(id,sdate); },1000);

Reply

Marsh Posté le 08-04-2009 à 21:53:47    

pas tres propre, par contre ca marchera pas sous firefox, ni webkit
 

<script type="text/javascript">
 // <![CDATA[  
 
 if (window.addEventListener){
  window.addEventListener("load", render, false);
 } else if (window.attachEvent) {
  window.attachEvent("onload", render);
 }
 
 function Rebour(id, sdate){
  var update = window.setInterval(updateTime, 1000, id , sdate);
 }
 function updateTime(id, sdate){
  var date1 = new Date();
  var date2 = new Date (sdate);
  var sec = (date2.getTime() - date1.getTime()) / 1000;
  var n = 24 * 3600;
  if (sec > 0){
    var j = Math.floor (sec / n);
    var h = Math.floor ((sec - (j * n)) / 3600);
    var mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
    var sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
    document.getElementById(id).innerHTML = j +"J "+ h +"H "+ mn +"min "+ sec + "sec ";
   }
 }
 
 function render(event){
  Rebour("div1","Apr 11 21:00:00 2009" );
  Rebour("div2", "Apr 25 21:00:00 2009" );
  Rebour("div3", "May 9 21:00:00 2009" );
  Rebour("div4", "May 23 21:00:00 2009" );
  Rebour("div5", "Jun 20 21:00:00 2009" );
 };
 // ]]>  
 
 </script>


Message édité par stealth35 le 08-04-2009 à 21:53:58
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed