-1

我想通过向母版页添加 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 分钟开始重新开始。

所以请帮助我。即使我改变了主题,时间也应该照原样继续,没有任何刷新。

4

2 回答 2

0

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

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

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

于 2013-01-02T04:43:24.500 回答
0

如果您在 ASP 中执行此操作,则应将计时器保留在服务器端并将其引入新加载的页面(以便您随时保持状态)。否则,您可以设置 cookie 并在您从一个页面转到另一个页面时从您离开的地方继续。

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

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

于 2013-01-02T04:39:04.097 回答