0

再会。

抱歉,如果问题已经存在 - 我找不到答案(如果答案已经存在,请给我链接)

我有代码:

<div id="counttime">06:00:00</div> //h:i:s

我想做一个倒计时计时器,让女主角的时间随着时间的推移减少 1 秒,当时间为 00:00 (i:s) 时,将执行函数 func ();

决定不应该是第三方插件,只是纯js或者jquery。

我开始制作脚本但不知道下一步如何制作...

var start = $('#counttime').html();
var CountArrTime = (start.split(':')).length;
alert(CountArrTime);
if(CountArrTime == '3'){
var h_start = CountArrTime[0]; // hours start
var m_start = CountArrTime[1]; // minutes start
var s_start = CountArrTime[2]; // secounds start
}
else if(CountArrTime == '2'){
var m_start = CountArrTime[0]; // minutes start
var s_start = CountArrTime[1]; // secounds start
}

div 中的结果(时间结束时)counttime应为 00:00(分钟:秒);

在我的示例中,如何对小时、分钟、秒进行倒计时?

4

2 回答 2

1

感谢您提供链接帮助。

我回答我的问题:

JSFIDLE for test

var timer = $('#counttime').html();
timer = timer.split(':');

if(timer.length == 3){
var hours = timer[0];
var minutes = timer[1];
var seconds = timer[2];
}
else if(timer.length == 2){
var hours = 0;
var minutes = timer[0];
var seconds = timer[1];
}

if(hours > 0 || minutes > 0 || seconds > 0){

setInterval(function() {

seconds -= 1;


if (seconds < 0 && minutes > 0 && hours > 0) {
    minutes -= 1;
    seconds = 59;

}

else if (seconds < 0 && minutes == 0 && hours > 0) {
    hours -= 1;
    minutes = 59;
    seconds = 59;

}

else if (seconds < 0 && minutes > 0 && hours == 0) {
    hours = 0;
    minutes -= 1;
    seconds = 59;
}

if(hours > 0 && hours < 10 && ((hours+'').length != 2)) hours = '0' + hours;

if ((minutes < 10) && ((minutes+'').length < 2)) minutes = '0' + minutes;

if (seconds < 10 && length.seconds != 2) seconds = '0' + seconds;

   if(hours > 0){hoursN = hours + ':';}else{hoursN = '';}
    $('#counttime').html(hoursN + minutes + ':' + seconds);

}, 1000);

}
于 2013-10-27T08:10:40.437 回答
1

这是我的看法。

请注意大小,如果您离开并回来,它实际上会正确计时

Live Demo

function pad(num) {
  return num<10?"0"+num:num;
}
$(function() {
  var tCont = $('#counttime');
  var timer = tCont.html().split(':');

  if (timer.length === 2) timer.unshift(0);
  var endMilli= timer[0]*60*60*1000;
  endMilli += timer[1]*60*1000
  endMilli += timer[2]*1000;
  if(endMilli > 0) {
    var endTime = new Date(Date.now()+endMilli);   
    var tId = setInterval(function() {
      var diff = endTime.getTime()-Date.now();
      if (diff<=0) {
        tCont.html("00:00:00");
        clearInterval(tId);
      }
      else {
        var d = new Date(diff);
        hh = pad(d.getUTCHours()); 
        mm = pad(d.getMinutes());
        ss = pad(d.getSeconds());
        tCont.html(""+hh+":"+mm+":"+ss);
      }
    },300);      
  }
});
于 2013-10-27T18:25:41.523 回答