我想通过在母版页面添加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分钟开始。
所以请帮助我。即使我改变主题,时间应该继续,因为它没有任何刷新。
答案 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>
每次用户切换到另一个页面时,请尝试更新会话状态。