以秒为单位的倒计时:毫秒

时间:2014-09-23 12:47:42

标签: javascript html timer countdown

我需要一个div的文字在你开始计数时变红,它应该持续3秒并在计数时留下红色文字。完成后返回正常(停止3秒后定期显示) 以毫秒为单位显示计数。

我试过,但它仍然失败。

4 个答案:

答案 0 :(得分:1)

这样的东西?



var foo = document.getElementById('foo');

function startCountDown(ele) {
    ele.origText = ele.innerHTML;
    ele.style.color = "red";
    ele.timeStart = (new Date()).getTime() + 3000;
    ele.intervalVar = setInterval(function() {
        var curTime = ele.timeStart - (new Date()).getTime();
        if(curTime < 0) {
            ele.innerHTML = ele.origText;
            ele.style.color = "";
            clearInterval(ele.intervalVar);
        }
        else ele.innerHTML = curTime;
        
    },20);
    
}

setTimeout(function() {startCountDown(foo);},1000);
&#13;
<div id = 'foo'>bar</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

创新/替代使用requestAnimationFrame

显示计时器的方式

http://jsfiddle.net/wjtkr95t/4/

对浏览器的内存影响较小。它还允许您进行一些微小的修改,以便更好地控制定时器,动画......无论如何......

var
end,
now=Date.now,
raf=window.requestAnimationFrame,
duration=120000,//MS
out=document.getElementById('out');

function displayTime(){
 var c=end-now();
 out.textContent=ms2TimeString(c>0?(raf(displayTime),c):0);
}
function go(){
 end=now()+duration;
 raf(displayTime);
}

Ms to timeString function

function ms2TimeString(a,k,s,m,h){
 return k=a%1e3,
  s=a/1e3%60|0,
  m=a/6e4%60|0,
  h=a/36e5%24|0,
  (h?(h<10?'0'+h:h)+':':'')+
  (m<10?0:'')+m+':'+
  (s<10?0:'')+s+'.'+
  (k<100?k<10?'00':0:'')+k
}

https://codereview.stackexchange.com/q/45335/33435

<强>样本

http://jsfiddle.net/wjtkr95t/

DEMO(改变颜色) ..只有100ms ..改变它

http://jsfiddle.net/wjtkr95t/1/

DEMO(2秒后改变颜色) ..只需100ms ..改变它

http://jsfiddle.net/wjtkr95t/2/

DEMO(用700毫秒彩色动画改变2秒后的颜色)

http://jsfiddle.net/wjtkr95t/3/

如果您有任何问题,请询问

答案 2 :(得分:0)

我认为,如果你向我们展示你的算法,那么任何想要帮助你的人都会更清楚。等待它,我建议你看看函数setInterval()是如何工作的,因为它会延迟,所以你可能会用它来达到你的目标。

转到here查看文档。

答案 3 :(得分:0)

这可以使用CSS动画完成,并将一个类添加到div元素。

这种方法会更好,因为CSS动画不会阻塞,而因为javascript是单个同步线程(大部分);所以使用setInterval会阻止javascript的其余部分运行。