【问题标题】:Time counter with JavaScript or PHP使用 JavaScript 或 PHP 的计时器
【发布时间】:2010-11-28 12:03:51
【问题描述】:

我想用 JavaScript 或 PHP 实现一个计时器。我在 Google 上进行了一些查找并尝试了它,但没有得到我需要的输出。

用户将在提供的文本框中输入时间,然后我需要给他们一个从他们输入的时间开始的计数器。

例子:如果我输入1:27:38并点击提交,时间应该会减少,当它达到0时我应该得到一个警报。

我该如何实现?

【问题讨论】:

    标签: php javascript count timer counter


    【解决方案1】:

    在 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>
    

    【讨论】:

    • 太棒了,这就是我需要的 感谢罗伯特,这为我节省了一些时间
    【解决方案2】:

    在 PHP 中:

    list($hours, $minutes, $seconds) = explode(':', $_POST['time']);
    
    $seconds = $hours * 3600 + $minutes * 60 + $seconds;
    
    for ($i = $seconds; $i > 0; $i--)
    {
       echo $i;
       sleep(1);
       flush();
    }
    
    echo 'Countdown finished.';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多