【问题标题】:Beautifying a countup timer美化倒计时
【发布时间】:2016-08-14 14:14:10
【问题描述】:
【问题讨论】:
标签:
javascript
jquery
timer
【解决方案1】:
var sec =0, min=0, hour=0;
setInterval(function(){
sec++;
if(sec==60){sec=0; min++;}
if(min==60){min=0; hour++;}
var str = 'it has been';
str+= hour?' ' +hour + (hour==1?' hour':' hours'):'';
str+= min?(hour?' and ':' ') +min+ (min==1?' minute':' minutes') :'';
str+= sec?(min||hour?' and ':' ') +sec+ (sec==1?' second':' seconds'):'';
document.getElementById('passed').innerHTML=str;
},1000);
这里是DEMO
【解决方案2】:
请注意,setInterval() 在多次调用后可能会略有漂移。不确定这是否是这里的要求,但如果您需要一个准确的计时器,使用参考时间会更安全。
例如:
var start = +new Date();
setInterval(function() {
var d = Math.round((+new Date() - start) / 1000),
n, res = [];
[[3600, 'hour'], [60, 'minute'], [1, 'second']].forEach(function(e) {
if(n = (d / e[0]) | 0) {
res.push(n + ' ' + e[1] + (n > 1 ? 's' : ''));
d -= n * e[0];
}
});
document.getElementById('output').innerHTML = 'It has been ' + res.join(' and ');
}, 1000);
<div id="output"></div>