1. 程式人生 > >JS秒錶倒計時器 (轉)

JS秒錶倒計時器 (轉)

<html>

<body>

<span>倒計時30分鐘:</span><span id="clock">00:30:00:00</span>

</body>

</heml>

<script type="text/javascript">

//秒錶倒計時控制
var normalelapse = 100;  
var nextelapse = normalelapse;
var counter;   
var startTime;
var start1 = clock.innerText;   
var finish = "00:00:00:00";  
var timer = null;  
// 開始執行  
function run() {  
    counter = 0;  
    // 初始化開始時間  
    startTime = new Date().valueOf(); 
    //alert(startTime);
     
    // nextelapse是定時時間, 初始時為100毫秒  
    // 注意setInterval函式: 時間逝去nextelapse(毫秒)後, onTimer才開始執行  
    timer = window.setInterval("onTimer()", nextelapse);   
}  
// 停止執行  
function stop() {  
    window.clearTimeout(timer);  
}  
window.onload = function() {   
 run();
}  
// 倒計時函式  
function onTimer()  
{  
    if (start1 == finish)  
    {  
        window.clearInterval(timer);   
        return;  
    }  
    var hms = new String(start1).split(":");  
    var ms = new Number(hms[3]);  
    var s = new Number(hms[2]);  
    var m = new Number(hms[1]);  
    var h = new Number(hms[0]);  
    ms -= 10;  
    if (ms < 0)  
    {  
        ms = 90;  
        s -= 1;  
        if (s < 0)  
        {  
            s = 59;  
            m -= 1;  
        }  
        if (m < 0)  
        {  
            m = 59;  
            h -= 1;  
        }  
    }  
    var ms = ms < 10 ? ("0" + ms) : ms;  
    var ss = s < 10 ? ("0" + s) : s;  
    var sm = m < 10 ? ("0" + m) : m;  
    var sh = h < 10 ? ("0" + h) : h;  
    start1 = sh + ":" + sm + ":" + ss + ":" + ms;  
    clock.innerText = start1;  
    // 清除上一次的定時器  
    window.clearInterval(timer);  
    // 自校驗系統時間得到時間差, 並由此得到下次所啟動的新定時器的時間nextelapse  
    counter++;   
    var counterSecs = counter * 100;  
    var elapseSecs = new Date().valueOf() - startTime;  
    var diffSecs = counterSecs - elapseSecs;  
    nextelapse = normalelapse + diffSecs;  
    //diff.value = counterSecs + "-" + elapseSecs + "=" + diffSecs;  
   // next.value = "nextelapse = " + nextelapse;  
    if (nextelapse < 0) nextelapse = 0;  
    // 啟動新的定時器  
    timer = window.setInterval("onTimer()", nextelapse);   

</script>

轉載自:https://blog.csdn.net/pamchen/article/details/7854855