在javascript中的秒表

时间:2013-01-02 04:32:05

标签: javascript asp.net

我想通过在母版页面添加4个aspx页面,一次设计4个科目的在线考试网站。为此,我需要一个秒表。

据我所知,我在JavaScript中设计了一个秒表并将其附加到母版页。

var tim;
var min = 120;
var sec = 60;
var f = new Date();

function f1() {
    f2();
    document.getElementById("startday").innerHTML = f.getDate() + "/" + (f.getMonth() + 1) + "/" + f.getFullYear();
    document.getElementById("starttime").innerHTML = "Exam Starts at " + f.getHours() + ":" + f.getMinutes();
    //document.getElementById("endtime").innerHTML = "Your  time is :" + f.toLocaleTimeString();
}

function f2() {
    if (parseInt(sec) > 0) {
        sec = parseInt(sec) - 1;
        document.getElementById("showtime").innerHTML = min + ":" + sec;
        tim = setTimeout("f2()", 1000);
    } else {
        if (parseInt(sec) == 0) {
            min = parseInt(min) - 1;
            if (parseInt(min) == 0) {
                clearTimeout(tim);
                location.href = "default5.aspx";
            } else {
                sec = 60;
                document.getElementById("showtime").innerHTML = min + ":" + sec;
                tim = setTimeout("f2()", 1000);
            }
        }
    }
}

但我的问题是,如果我正在更改我的主题,那个母版页也会进行刷新,停止观看时间将从120分钟开始。

所以请帮助我。即使我改变主题,时间应该继续,因为它没有任何刷新。

2 个答案:

答案 0 :(得分:0)

如果您在ASP中执行此操作,则应将计时器保留在服务器端并将其引入新加载的页面中(以便保留状态)。否则,您可以设置cookie并从页面到页面时选择上次停止的位置。

或者,您可以动态加载新页面,这样您就不会使用iframe离开主页面(计时器所在的页面),或者如果所有页面都是一个域的本地页面,您可以通过ajax加载它们。

但我确实认为,如果您可以控制ASP,那么第一个选项是最好的。

答案 1 :(得分:0)

我假设您使用的是ASP.Net Web Form。您可以使用Session来保持Clock的状态。在母版页中,你可以有类似的东西

<script>
    var min = <%= Session["min"] %>;
    var sec = <%= Session["sec"] %>;
</script>

每次用户切换到另一个页面时,请尝试更新会话状态。