
ASP.NET 倒计时 刷新问题
我在做一个网上考试系统,在页面上方有一个JavaScript的倒计时,页面下方从数据库里面取题的时候,用的是分页存储过程,这就涉及到每次点击下一页的时候,倒计时都会重新开...
我在做一个网上考试系统,在页面上方有一个JavaScript的倒计时,页面下方从数据库里面取题的时候,用的是分页存储过程,这就涉及到每次点击下一页的时候,倒计时都会重新开始,下面是倒计时方法,如何在iframe里面显示,且点击下一页倒计时不重新开始,希望详细些
<SCRIPT LANGUAGE="JavaScript">
<!--
var maxtime = 60*60 //
function CountDown(){
if(maxtime>=0){
minutes = Math.floor(maxtime/60);
seconds = Math.floor(maxtime%60);
msg = ""+minutes+"分"+seconds+"秒";
document.all["timer"].innerHTML=msg;
if
(maxtime == 5*60)
alert('注意,还有5分钟!');
--maxtime;
}
else{
clearInterval(timer);
alert("时间到,结束!");
}
}
timer = setInterval("CountDown()",1000);
//-->
</SCRIPT> 展开
<SCRIPT LANGUAGE="JavaScript">
<!--
var maxtime = 60*60 //
function CountDown(){
if(maxtime>=0){
minutes = Math.floor(maxtime/60);
seconds = Math.floor(maxtime%60);
msg = ""+minutes+"分"+seconds+"秒";
document.all["timer"].innerHTML=msg;
if
(maxtime == 5*60)
alert('注意,还有5分钟!');
--maxtime;
}
else{
clearInterval(timer);
alert("时间到,结束!");
}
}
timer = setInterval("CountDown()",1000);
//-->
</SCRIPT> 展开
展开全部
首先你要记录
1.进入页面时的初始时间比如2009-12-22 16:35
2.或者是进入页面时的初始倒计时时间 比如60秒,就像你var maxtime = 60*60 // 定义的意思相同
那么我们再来看你的问题,因为你想通过js来实现,那么每次像服务器提交数据的时候,也就是查询的时候,js会恢复初始值,这个是显而易见的.
所以问题是如何能在服务器回调数据之后,页面上仍然会从之前的好比58秒继续及时,那么你在js中定义的全局变量,是不能满足要求的,我建议你可以通过读取页面上某控件,比如说hidden中读取秒数,并在代码中味hidden赋值,代码如下:
//var maxtime = 60 * 60 //
function CountDown() {
var start_time = parseInt(document.getElementById("HiddenField1").value);
start_time--;
document.getElementById("timer").innerHTML = start_time.toString();
document.getElementById("HiddenField1").value = start_time.toString();
if (start_time == 10) { alert("还有十秒注意"); }
if (start_time == 0) { alert("时间到"); }
}
window.setInterval("CountDown()", 1000);
页面添加控件<asp:HiddenField ID="HiddenField1" value="60" runat="server" />
后台代码在pageload里面写HiddenField1.Value=HiddenField1.Value;(此句应该可以不要,具体你看下吧,作用是为了在查询的时候通后台把HiddenField1的值赋值于自己)
还有倒计时刷新,我以前总结过,你可以看下这里,推荐你使用WebService
http://hi.baidu.com/wc123hange/blog/item/204eeaf8919f3f9c58ee9037.html
1.进入页面时的初始时间比如2009-12-22 16:35
2.或者是进入页面时的初始倒计时时间 比如60秒,就像你var maxtime = 60*60 // 定义的意思相同
那么我们再来看你的问题,因为你想通过js来实现,那么每次像服务器提交数据的时候,也就是查询的时候,js会恢复初始值,这个是显而易见的.
所以问题是如何能在服务器回调数据之后,页面上仍然会从之前的好比58秒继续及时,那么你在js中定义的全局变量,是不能满足要求的,我建议你可以通过读取页面上某控件,比如说hidden中读取秒数,并在代码中味hidden赋值,代码如下:
//var maxtime = 60 * 60 //
function CountDown() {
var start_time = parseInt(document.getElementById("HiddenField1").value);
start_time--;
document.getElementById("timer").innerHTML = start_time.toString();
document.getElementById("HiddenField1").value = start_time.toString();
if (start_time == 10) { alert("还有十秒注意"); }
if (start_time == 0) { alert("时间到"); }
}
window.setInterval("CountDown()", 1000);
页面添加控件<asp:HiddenField ID="HiddenField1" value="60" runat="server" />
后台代码在pageload里面写HiddenField1.Value=HiddenField1.Value;(此句应该可以不要,具体你看下吧,作用是为了在查询的时候通后台把HiddenField1的值赋值于自己)
还有倒计时刷新,我以前总结过,你可以看下这里,推荐你使用WebService
http://hi.baidu.com/wc123hange/blog/item/204eeaf8919f3f9c58ee9037.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询