求一个JavaScript的倒计时的效果 http://topic.csdn.net/u/20080526/16/67d993af-5c8f-4767-b9fb-1a47df2d0174.html?seed=237871488 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用ajax调用服务器端的时间即可如果js客户端实现 用户一刷新就重新开始了。 以下是我的帮助但不知道是否对你有帮助问题1当考生点击第一页,那么计时器便开始计时,当考生点击到下一页时触发一个事件,将考生编号与当前所用时间一起保存到Cookie,等到第二页打开后,立即从Cookie中读取前面所用时间开始计时。问题2当考试设置时间到时,可做一个弹出框,将焦点聚焦到此弹出框。 谢谢大家的回答,我会试试的,都很有用,我现在的想法就是如果有好几页的题目,都放到一个Form里面,然后一起提交到后台阅卷,我现在的问题不是一个页面的数据可以放到一个Form里面吗?感谢大家跟帖帮忙 如果是页面切换的话,你可以把数据保存在服务器端的session,或者在当前页面的隐藏控件里面。当然这样的话在页面切换的时候需要向服务器提交数据。简单的话,可以不进行页面的切换,将不同的面的数据放在不同的DIV中。然后通过控制DIV的隐藏和显示来模拟页面切换的效果。对于计时的处理。最好是在服务器端和客户端同进行进行确认。实现方法,在开始测试的时候,向服务器端提出申请,通知服务器端开始考试计时。在结束的时候进行考试时间的确认。在客户端实时的进行计时和显示。如果只在客户端做的话,不安全。 非常感谢楼上的回复,在客户端做计时确实非常不安全,页面一刷新又重新开始计时了,但是如何既能在页面动态显示剩余时间,又能保证在考试重复刷新页面的时候不会重新计时,难道要在数据库里面增加字段?关于那个DIV模拟不同页面具体该如何弄呢?谢谢指教 <html><head><title>倒计时</title><style>.time{color:#ffffff;font-family:verdana,geneva,helveticafont-size:9pt}a:link{text-decoration:none;color:#000000}a:active{text-decoration:none;color:#000000}a:visited{text-decoration:none;color:#000000}a:hover{text-decoration:none;color:#000000}</style><script language="javascript">var time_now_server,time_now_client,time_end,time_server_client,timerID;time_end=new Date("Jan 20, 2002 00:00:00");time_end=time_end.getTime();time_now_server=new Date("Dec 21, 2001 13:11:1");time_now_server=time_now_server.getTime();time_now_client=new Date();time_now_client=time_now_client.getTime();time_server_client=time_now_server-time_now_client;setTimeout("show_time()",1000);function show_time(){ timer.innerHTML =time_server_client; var time_now,time_distance,str_time; var int_day,int_hour,int_minute,int_second; var time_now=new Date(); time_now=time_now.getTime()+time_server_client; time_distance=time_end-time_now; if(time_distance>0) { int_day=Math.floor(time_distance/86400000) time_distance-=int_day*86400000; int_hour=Math.floor(time_distance/3600000) time_distance-=int_hour*3600000; int_minute=Math.floor(time_distance/60000) time_distance-=int_minute*60000; int_second=Math.floor(time_distance/1000) if(int_hour<10) int_hour="0"+int_hour; if(int_minute<10) int_minute="0"+int_minute; if(int_second<10) int_second="0"+int_second; str_time="<font style='font-size:14pt;color:#28C84A'>"+int_day+"</font><font face='黑体' style='font-size:13pt;'>天</font><br>"+int_hour+":"+int_minute+":"+int_second; timer.innerHTML=str_time; setTimeout("show_time()",1000); } else { timer.innerHTML ="over"; clearTimeout(timerID) }}</script><style>.time{color:#000000;font-family:verdana;font-size:9pt}</style></head><BODY BGCOLOR=#FFFFFF topmargin=2 leftmargin=2><div id="Layer1" style="position:absolute; width:160px; height:187px; z-index:1"><!-- begin calendar --> <table width=160 border=0 cellpadding=0 cellspacing=0> <tr> <td colspan=3> </td> </tr> <tr> <td width="47"> </td> <td background="images/mail_03.gif" width="67" valign="top"> <table width=65 cellpadding=3 cellspacing=0 border=0> <tr> <td align=center class="time"> <a href="http://203.212.7.76:8000/Announcement.html" target=_blank><div id="timer" style="font-size:9pt;color:red"></div></a> </td> </tr> </table> </td> <td width="46"> </td> </tr> <tr> <td colspan=3> </td> </tr> </table> <!-- end calendar --></div></BODY></HTML> 其实,所说的客户端不安全,不是指画面刷新。对于计时的实现,是在开始的时候计算出结束的时间,因此在开始测试的时候需要向服务器提交这个时间,交把这个时间保存起来。建议保存到数据库中。客户端的结束时间保存到cookie中就可以了。需要注意的是,由于服务器和客户端机器时间可能不同,因此保存的时间也就可能是不同的。不过这没关系。客户端和服务器端分别计算就可以了。因此所说的不安全,主要是指用户可以通过修改本地时间,或者通过script修改网页状态来作弊。因此在提交答卷的时候,服务器端要用到之前保存的时间与提交时服务器系统时间进行确认。如果超出有效时间则视为作弊,考试成绩无效。至于分页显示,只要把每页的信息放在不同的DIV中,并控制DIV的显示/隐藏就可以了。 一个费解的js算术题 ★求助★大家帮忙看看下面这个js是怎么个加密方式啊。求解密 JavaScript Jquery中ajax方法load的callback问题。 javascript脚本为什么只执行了一半 元素ID是个字符串变量,如何用jquery选择器获得这个对象? BASE64解密问题,在线等 关于提示框 简单 急求一正则表达式,要求是输入数字,小数点和正负号,小数电后最多两位!谢谢了!分不够加! 怎样在<input...>的事件中把name作为参数传递? 简单问题 这段代码怎么在IE中不能运行,但是firefox中可以
问题1
当考生点击第一页,那么计时器便开始计时,当考生点击到下一页时触发一个事件,将考生编号与当前所用时间一起保存到Cookie,等到第二页打开后,立即从Cookie中读取前面所用时间开始计时。
问题2
当考试设置时间到时,可做一个弹出框,将焦点聚焦到此弹出框。
,然后一起提交到后台阅卷,我现在的问题不是一个页面的数据可以放到一个Form里面吗?
感谢大家跟帖帮忙
如果是页面切换的话,
你可以把数据保存在服务器端的session,
或者在当前页面的隐藏控件里面。
当然这样的话在页面切换的时候需要向服务器提交数据。简单的话,
可以不进行页面的切换,
将不同的面的数据放在不同的DIV中。
然后通过控制DIV的隐藏和显示来模拟页面切换的效果。对于计时的处理。
最好是在服务器端和客户端同进行进行确认。
实现方法,
在开始测试的时候,
向服务器端提出申请,
通知服务器端开始考试计时。
在结束的时候进行考试时间的确认。
在客户端实时的进行计时和显示。如果只在客户端做的话,不安全。
但是如何既能在页面动态显示剩余时间,又能保证在考试重复刷新页面的时候不会重新计时,
难道要在数据库里面增加字段?关于那个DIV模拟不同页面具体该如何弄呢?谢谢指教
<head>
<title>倒计时</title>
<style>
.time{color:#ffffff;font-family:verdana,geneva,helveticafont-size:9pt}
a:link{text-decoration:none;color:#000000}
a:active{text-decoration:none;color:#000000}
a:visited{text-decoration:none;color:#000000}
a:hover{text-decoration:none;color:#000000}
</style><script language="javascript">var time_now_server,time_now_client,time_end,time_server_client,timerID;time_end=new Date("Jan 20, 2002 00:00:00");
time_end=time_end.getTime();time_now_server=new Date("Dec 21, 2001 13:11:1");
time_now_server=time_now_server.getTime();time_now_client=new Date();
time_now_client=time_now_client.getTime();time_server_client=time_now_server-time_now_client;setTimeout("show_time()",1000);function show_time()
{
timer.innerHTML =time_server_client; var time_now,time_distance,str_time;
var int_day,int_hour,int_minute,int_second;
var time_now=new Date();
time_now=time_now.getTime()+time_server_client;
time_distance=time_end-time_now;
if(time_distance>0)
{
int_day=Math.floor(time_distance/86400000)
time_distance-=int_day*86400000;
int_hour=Math.floor(time_distance/3600000)
time_distance-=int_hour*3600000;
int_minute=Math.floor(time_distance/60000)
time_distance-=int_minute*60000;
int_second=Math.floor(time_distance/1000)
if(int_hour<10)
int_hour="0"+int_hour;
if(int_minute<10)
int_minute="0"+int_minute;
if(int_second<10)
int_second="0"+int_second;
str_time="<font style='font-size:14pt;color:#28C84A'>"+int_day+"</font><font face='黑体' style='font-size:13pt;'>天</font><br>"+int_hour+":"+int_minute+":"+int_second;
timer.innerHTML=str_time;
setTimeout("show_time()",1000);
}
else
{
timer.innerHTML ="over";
clearTimeout(timerID)
}
}
</script>
<style>
.time{color:#000000;font-family:verdana;font-size:9pt}
</style>
</head><BODY BGCOLOR=#FFFFFF topmargin=2 leftmargin=2>
<div id="Layer1" style="position:absolute; width:160px; height:187px; z-index:1">
<!-- begin calendar -->
<table width=160 border=0 cellpadding=0 cellspacing=0>
<tr>
<td colspan=3> </td>
</tr>
<tr>
<td width="47"> </td>
<td background="images/mail_03.gif" width="67" valign="top">
<table width=65 cellpadding=3 cellspacing=0 border=0>
<tr>
<td align=center class="time">
<a href="http://203.212.7.76:8000/Announcement.html" target=_blank><div id="timer" style="font-size:9pt;color:red"></div></a>
</td>
</tr>
</table>
</td>
<td width="46"> </td>
</tr>
<tr>
<td colspan=3> </td>
</tr>
</table>
<!-- end calendar -->
</div>
</BODY>
</HTML>
其实,所说的客户端不安全,
不是指画面刷新。
对于计时的实现,
是在开始的时候计算出结束的时间,
因此在开始测试的时候需要向服务器提交这个时间,
交把这个时间保存起来。
建议保存到数据库中。
客户端的结束时间保存到cookie中就可以了。
需要注意的是,由于服务器和客户端机器时间可能不同,
因此保存的时间也就可能是不同的。
不过这没关系。
客户端和服务器端分别计算就可以了。因此所说的不安全,
主要是指用户可以通过修改本地时间,
或者通过script修改网页状态来作弊。
因此在提交答卷的时候,
服务器端要用到之前保存的时间与提交时服务器系统时间进行确认。
如果超出有效时间则视为作弊,考试成绩无效。至于分页显示,
只要把每页的信息放在不同的DIV中,
并控制DIV的显示/隐藏就可以了。