2011-11-09 256 views
4

我有一個JavaScript代碼,顯示倒計時器從5分鐘。如何在倒數計時器中顯示毫秒javascript

這是代碼

var mins 
var secs; 

function cd() { 
    mins = 1 * m("05"); // change minutes here 
    secs = 0 + s(":00"); // change seconds here (always add an additional second to your total) 
    redo(); 
} 

function m(obj) { 
    for(var i = 0; i < obj.length; i++) { 
     if(obj.substring(i, i + 1) == ":") 
     break; 
    } 
    return(obj.substring(0, i)); 
} 

function s(obj) { 
    for(var i = 0; i < obj.length; i++) { 
     if(obj.substring(i, i + 1) == ":") 
     break; 
    } 
    return(obj.substring(i + 1, obj.length)); 
} 

function dis(mins,secs) { 
    var disp; 
    if(mins <= 9) { 
     disp = " 0"; 
    } else { 
     disp = " "; 
    } 
    disp += mins + ":"; 
    if(secs <= 9) { 
     disp += "0" + secs; 
    } else { 
     disp += secs; 
    } 
    return(disp); 
} 

function redo() { 
    secs--; 
    if(secs == -1) { 
     secs = 59; 
     mins--; 
    } 

    var timerStr = dis(mins,secs); 
    $("#countDownTimer").text(timerStr); // setup additional displays here. 
    if((mins == 0) && (secs == 0)) { 

    } else { 
     cd = setTimeout("redo()",1); 
    } 


} 

function init() { 
    cd(); 
} 

window.onload = init; 

我怎樣才能改變腳本來顯示毫秒太

或有任何簡單的腳本來顯示,包括分鐘的倒計時計時器:秒:毫秒

+0

[用毫秒和回調的jQuery1分鐘倒計時】的可能重複(http://stackoverflow.com/questions/3020062/jquery-1-minute-countdown-with-milliseconds-and-callback)也見[顯示毫秒的JavaScript倒計時](http://stackoverflow.com/questions/4870569/javascript-countdown-with-showing-milliseconds)。 –

回答

2

我重新編寫了包含毫秒的代碼。還要確保setTimer設置正確。

var mins 
var secs; 
var ms; 

function cd() { 
    mins = 1 * m("05"); // change minutes here 
    secs = 0 + s(":00"); // change seconds here (always add an additional second to your total) 
    ms = 0 + ms(":00");//change millisecons here 
    redo(); 
} 

function m(obj) { 
    for(var i = 0; i < obj.length; i++) { 
     if(obj.substring(i, i + 1) == ":") 
     break; 
    } 
    return(obj.substring(0, i)); 
} 

function s(obj) { 
    for(var i = 0; i < obj.length; i++) { 
     if(obj.substring(i, i + 1) == ":") 
     break; 
    } 
    return(obj.substring(i + 1, obj.length)); 
} 

function ms(obj) { 
    for(var i = 0; i < obj.length; i++) { 
     if(obj.substring(i, i + 1) == ":") 
     break; 
    } 
    return(obj.substring(i + 1, obj.length)); 
} 

function dis(mins,secs,ms) { 
    var disp; 
    if(mins <= 9) { 
     disp = " 0"; 
    } else { 
     disp = " "; 
    } 
    disp += mins + ":"; 
    if(secs <= 9) { 
     disp += "0" + secs; 
    } else { 
     disp += secs + ":"; 
    } 
    if(ms <= 9) { 
     disp += "0" + ms; 
    } else { 
     disp += ms; 
    } 
    return(disp); 
} 

function redo() { 
    ms--; 
    if(ms == -1) { 
     ms = 99; 
     secs--; 
    } 
    if(secs == -1) { 
     secs = 59; 
     mins--; 
    } 

    var timerStr = dis(mins,secs,ms); 
    document.getElementById('countdown_fld').innerText=timerStr; // setup additional displays here. 
    if((mins == 0) && (secs == 0) && (ms == 0)) { 

    } else { 
     cd = setTimeout("redo()",10); //make sure to set the timer right 
    } 


} 

function init() { 
    cd(); 
} 
+0

是的,我的代碼有一個小小的變化,函數每秒調用即cd = setTimeout(「redo()」,1000) ; – Linto

+0

感謝您的幫助,讓我知道毫秒應該在000,對不對?因爲1000毫秒= 1秒 – Linto

+0

1000 = 1秒所以... 如果您將它設置爲100將充分模擬毫秒。 –

2

你調用的1參數,這意味着每計時器 '事件' 1millisecond超時,但您在redo()函數中將該毫秒事件視爲整秒。

重做()應爲:

function redo() { 
    s -= 0.001; // subtract 1 millisecond 
    if (s < 0) { 
     secs = 59.999; 
     mins--; 
    } 
} 

等。但是,由於每毫秒運行這段代碼會給瀏覽器帶來相當大的負載,並且不會以精確的毫秒精度運行。你應該做的是跟蹤時間 - 當你開始倒計時時,使用Date()對象記錄當前系統時間,該對象具有毫秒精度。

以比毫秒(例如,每200ms/0.2秒)更長的時間間隔調用您的重做(),然後從定時器的開始時間減去該時間點的系統時間。

+0

我也需要顯示毫秒。 codeie iam在每秒調用函數中有一個小小的改變,即cd = setTimeout(「redo()」,1000);那麼我們應該如何改變這一點。謝謝你的建議 – Linto

+0

JS Date對象有毫秒: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date –