刷新页面时JavaScript计时器正在重置

时间:2013-02-21 08:05:08

标签: timer counter countdown

我有一个倒计时器脚本..我将用它进行在线检查..但现在问题是它在重新刷新页面时重置...

是否有任何想法可以防止重置时间并在没有任何问题的情况下继续刷新页面?

这是代码

<script>

    var mins;

    var secs;

function cd() {


    mins = 1 * m("2"); // change minutes here
        secs = 0 + s(":01"); // 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--;
    }
    document.getElementById("disp").innerHTML=dis(mins,secs); // setup additional displays here.

    if((mins == 0) && (secs == 0)) {
        window.alert("Time is up. Press OK to continue."); // change timeout message as required
        // window.location = "yourpage.htm" // redirects to specified page once timer ends and ok button is pressed
    } else {
        cd = setTimeout("redo()",1000);
    }
}

function init() {
  cd();
}
window.onload = init;

</script>

1 个答案:

答案 0 :(得分:0)

如果刷新页面,则会重新执行所有javascript代码。这是正常行为。

如果您绝对需要继续离开,可以使用本地存储API(仅适用于现代浏览器)来存储时间(每秒更新一次值)。

加载页面后,您可以检查本地存储中是否存在该值,并从您所在的位置开始。

你确定你需要这种行为BTW吗?