Question

Je souhaite implémenter un compteur de temps avec JavaScript ou PHP. J'ai consulté Google et essayé, mais je n'ai pas obtenu le résultat dont j'ai besoin.

Les utilisateurs entreront l'heure dans la zone de texte fournie, puis je devrai leur donner un compteur à partir de l'heure où ils seront entrés.

Exemple: si j'entre 1:27:38 et que je clique sur soumettre, le temps devrait diminuer et je devrais recevoir une alerte lorsqu'il atteindra 0.

Comment puis-je implémenter cela?

Était-ce utile?

La solution

En JavaScript:

<html>
<head>


</head>
<body>
<script language="JavaScript">
<!-- //
var timeleft;
var nextdue;
var tick = 1000;



function parseTime(t) {
 var tt = ("0:00:"+t);
 tt = tt.split(":").reverse();
 return (tt[0] * 1000)+(tt[1] * 60000)+(tt[2] * 3600000);
}



function zeroPad(n) {
 if (n<10) return "0"+n;
 return ""+n;
}



function makeTime(t) {
 if (t<0) return "0:00:00";
 var tt=t+999;
 return Math.floor(tt/3600000)+":"+
 zeroPad(Math.floor(tt/60000)%60)+":"+
 zeroPad(Math.floor(tt/1000)%60);
}



function startTimer() {
 nextdue = new Date().getTime();
 timeleft = parseTime(document.timerform.timerbox.value);
 runTimer();
}



function runTimer() {
 document.timerform.timerbox.value=makeTime(timeleft);
 if (timeleft<=0) alert ("Time's up!");
 else {
  var timecorr = (new Date().getTime())-nextdue;
  if (timecorr>0 && timecorr<3000) {
   timeleft -= (tick+timecorr);
   nextdue += tick;
   if (timeleft<1) setTimeout ("runTimer()",tick+timeleft);
   else setTimeout("runTimer()",Math.max(1,tick-timecorr));
  }
  else {
   nextdue=(new Date().getTime())+tick;
   timeleft-=tick;
   if (timeleft<1) setTimeout ("runTimer()",tick+timeleft);
   else setTimeout("runTimer()",tick);
  }
 } 
}



// -->
</script>



<form name="timerform">
  Decimal places: <input type="text" name="timerbox" value="0:00:00"></input>
  <input type="button" value="Start timer" onClick="startTimer()"></input>
</form>
</body>
</html>

Autres conseils

En PHP:

list($hours, $minutes, $seconds) = explode(':', 

En PHP:

<*>POST['time']); $seconds = $hours * 3600 + $minutes * 60 + $seconds; for ($i = $seconds; $i > 0; $i--) { echo $i; sleep(1); flush(); } echo 'Countdown finished.';
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top