请问 在线考试的倒计时怎么做呢? 用js做 客户端刷新一次则会重新计时 如何根据服务端时间倒计时呢?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>time - left</title> <SCRIPT LANGUAGE="JavaScript"> <!-- t=45; //总时间 var maxtime; stc=document.cookie.split("; "); stt=''; lt=45*60; for(var i=0;i<stc.length;i++){ if(stc[i].split("=")[0]=="st"){ stt=parseInt(stc[i].split("=")[1]); break; } } function setcookie(){ var epd=new Date(); epd.setDate(epd.getMinutes()+45); document.cookie="st="+gtn+";expires="+epd.toGMTString(); lt=45*60; alert("Time start.\ntime left 45 mins."); } var epd=new Date(); gtn=Math.floor(epd.getTime()/1000); if(stt==''){ setcookie(); }else{ lt=stt-gtn+45*60; } function CountDown(){ if(lt>=0){ minutes = Math.floor(lt/60); seconds = Math.floor(lt%60); msg = "Time left - "+minutes+" : "+seconds+" ."; document.all["timer"].innerHTML = msg; if(lt == 10*60) alert('There is 10 mins left!'); //提醒时间 --lt; } else{ clearInterval(timer); alert("Time is up!"); } } timer = setInterval("CountDown()",1000); //--> </SCRIPT> </head> <body> <div id="timer" style="color:#666666; float:left;"></div> <div style="float:right; color:#666666;"> timeset <input type="text" id="txtip1" value="45" style="height:12px;" /> <a href="#" onClick="javascript:setcookie();return false;">Reset time.</a></div> </body> </html> <script language="javascript" type="text/javascript"> var interval = 1000; function ShowCountDown(year,month,day,divname) { var now = new Date(); var endDate = new Date(year, month-1, day); var leftTime=endDate.getTime()-now.getTime(); var leftsecond = parseInt(leftTime/1000); //var day1=parseInt(leftsecond/(24*60*60*6)); var day1=Math.floor(leftsecond/(60*60*24)); var hour=Math.floor((leftsecond-day1*24*60*60)/3600); var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60); var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60); var cc = document.getElementById(divname); cc.innerHTML = "距离"+year+"年"+month+"月"+day+"日还有:"+day1+"天"+hour+"小时"+minute+"分"+second; } window.setInterval(function(){ShowCountDown(2007,10,10,'divdown1');}, interval); </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>倒计时</title> </head> <body> <div id="divdown1"></div> </body> </html> 参考 楼上 你的代码 时间是获得客户端的时间吧?我改成用服务端的时间 但是刷新的时候 都会 重新倒计时 什么问题呢?aspx页面<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test4.aspx.cs" Inherits="Test4" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"><title>kkk </title> <script type="text/javascript"> <!-- t=45; //总时间 var maxtime; stc=document.cookie.split("; "); stt=''; lt=45*60; for(var i=0;i<stc.length;i++){ if(stc[i].split("=")[0]=="st"){ stt=parseInt(stc[i].split("=")[1]); break; } } function setcookie(){ var oHttp = new ActiveXObject("Microsoft.XMLHTTP"); oHttp.open("POST","getTime.aspx",false); oHttp.send();var epd=new Date(oHttp.responseText); epd.setDate(epd.getMinutes()+45); document.cookie="st="+gtn+";expires="+epd.toGMTString(); lt=45*60; alert("Time start.\ntime left 45 mins."); } var oHttp = new ActiveXObject("Microsoft.XMLHTTP"); oHttp.open("POST","getTime.aspx",false); oHttp.send();var epd=new Date(oHttp.responseText);gtn=Math.floor(epd.getTime()/1000); if(stt==''){ setcookie(); }else{ lt=stt-gtn+45*60; } function CountDown(){ if(lt>=0){ minutes = Math.floor(lt/60); seconds = Math.floor(lt%60); msg = "Time left - "+minutes+" : "+seconds+" ."; document.all["timer"].innerHTML = msg; if(lt == 10*60) alert('There is 10 mins left!'); //提醒时间 --lt; } else{ clearInterval(timer); alert("Time is up!"); } } timer = setInterval("CountDown()",1000); //--> </script></head><body> <div id="timer" style="color:#666666; float:left;"></div> <div id="divdown1"></div> <div style="float:right; color:#666666;"> timeset <input type="text" id="txtip1" value="45" style="height:12px;" /> <a href="#" onclick="javascript:setcookie();return false;">Reset time.</a></div> </body> </html>getTime.aspx <% =DateTime.Now %> 和服务器端通信吧Session也好,cookie也好。总之保存一个开始时间。然后就持续通信或者获取时间 乱来 <% =DateTime.Now %> 获取的也是客户端时间 1.首先将服务器上的一个时间赋值给一个控件(标签了,隐藏域。。)2.接着在JS中得到这个时间。(这个肯定会吧。)3.写倒计时的JS代码。 最简单的方法是将时间放置在windows.name中。 <script type="text/javascript"> windows.name=服务器时间 function tick() { var maxTime=windows.name; 将maxTime换算成秒的形式, IF(maxTime>0) { 进行--操作 然后将maxTime--后的值付给将要显示的标签 window.setTimeout("1000","tick()");//每秒调用一次,这样时间就会开始倒计时 }else { alert("嘿嘿,不许考试了,时间到了") } } </script> 思路就是这样的。希望对你有帮助 不好意思,刚才少写了点东西,就是maxTime进行--操作后,将这个值要赋值给windows.name这就OK了。 获得服务器时间的代码是在cs文件中么? 在Page_load中? Winform写文本后再读取的乱码问题 QQ c# 学习 如何用C#往PLC某个端口写数据 请教邮件附件的中文问题,在线等,急??? 请问哪位知道propertyInfo.SetValue方法的第三个参数如何使用? C# 链接 SQL数据库需要什么环境?? 多个checkBox获取标签名称问题 简单问题,怎么样获得某行某一列的数据,用datatable? 无法加载协定为“ServiceReference.XXXXX”的终结点配置部分 文件下载问题 谁给我讲解一下以下代码的意思。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>time - left</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
t=45; //总时间
var maxtime;
stc=document.cookie.split("; ");
stt='';
lt=45*60;
for(var i=0;i<stc.length;i++){
if(stc[i].split("=")[0]=="st"){
stt=parseInt(stc[i].split("=")[1]);
break;
}
}
function setcookie(){
var epd=new Date();
epd.setDate(epd.getMinutes()+45);
document.cookie="st="+gtn+";expires="+epd.toGMTString();
lt=45*60;
alert("Time start.\ntime left 45 mins.");
}
var epd=new Date();
gtn=Math.floor(epd.getTime()/1000);
if(stt==''){
setcookie();
}else{
lt=stt-gtn+45*60;
}
function CountDown(){
if(lt>=0){
minutes = Math.floor(lt/60);
seconds = Math.floor(lt%60);
msg = "Time left - "+minutes+" : "+seconds+" .";
document.all["timer"].innerHTML = msg;
if(lt == 10*60) alert('There is 10 mins left!'); //提醒时间
--lt;
}
else{
clearInterval(timer);
alert("Time is up!");
}
}
timer = setInterval("CountDown()",1000);
//-->
</SCRIPT>
</head> <body>
<div id="timer" style="color:#666666; float:left;"></div>
<div style="float:right; color:#666666;">
timeset
<input type="text" id="txtip1" value="45" style="height:12px;" />
<a href="#" onClick="javascript:setcookie();return false;">Reset time.</a></div>
</body>
</html>
<script language="javascript" type="text/javascript">
var interval = 1000;
function ShowCountDown(year,month,day,divname)
{
var now = new Date();
var endDate = new Date(year, month-1, day);
var leftTime=endDate.getTime()-now.getTime();
var leftsecond = parseInt(leftTime/1000);
//var day1=parseInt(leftsecond/(24*60*60*6));
var day1=Math.floor(leftsecond/(60*60*24));
var hour=Math.floor((leftsecond-day1*24*60*60)/3600);
var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60);
var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60); var cc = document.getElementById(divname);
cc.innerHTML = "距离"+year+"年"+month+"月"+day+"日还有:"+day1+"天"+hour+"小时"+minute+"分"+second;
}
window.setInterval(function(){ShowCountDown(2007,10,10,'divdown1');}, interval); </script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>倒计时</title>
</head>
<body>
<div id="divdown1"></div>
</body>
</html>
参考
我改成用服务端的时间 但是刷新的时候 都会 重新倒计时 什么问题呢?
aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test4.aspx.cs" Inherits="Test4" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>kkk </title>
<script type="text/javascript">
<!--
t=45; //总时间
var maxtime;
stc=document.cookie.split("; ");
stt='';
lt=45*60;
for(var i=0;i<stc.length;i++){
if(stc[i].split("=")[0]=="st"){
stt=parseInt(stc[i].split("=")[1]);
break;
}
} function setcookie(){
var oHttp = new ActiveXObject("Microsoft.XMLHTTP");
oHttp.open("POST","getTime.aspx",false);
oHttp.send();
var epd=new Date(oHttp.responseText);
epd.setDate(epd.getMinutes()+45);
document.cookie="st="+gtn+";expires="+epd.toGMTString();
lt=45*60;
alert("Time start.\ntime left 45 mins.");
}
var oHttp = new ActiveXObject("Microsoft.XMLHTTP");
oHttp.open("POST","getTime.aspx",false);
oHttp.send();
var epd=new Date(oHttp.responseText);
gtn=Math.floor(epd.getTime()/1000);
if(stt==''){
setcookie();
}else{ lt=stt-gtn+45*60;
}
function CountDown(){
if(lt>=0){
minutes = Math.floor(lt/60);
seconds = Math.floor(lt%60);
msg = "Time left - "+minutes+" : "+seconds+" .";
document.all["timer"].innerHTML = msg;
if(lt == 10*60) alert('There is 10 mins left!'); //提醒时间
--lt;
}
else{
clearInterval(timer);
alert("Time is up!");
}
}
timer = setInterval("CountDown()",1000);
//-->
</script>
</head>
<body>
<div id="timer" style="color:#666666; float:left;"></div>
<div id="divdown1"></div>
<div style="float:right; color:#666666;">
timeset
<input type="text" id="txtip1" value="45" style="height:12px;" />
<a href="#" onclick="javascript:setcookie();return false;">Reset time.</a></div>
</body>
</html>getTime.aspx
<% =DateTime.Now %>
Session也好,cookie也好。总之保存一个开始时间。然后就持续通信或者获取时间
<% =DateTime.Now %> 获取的也是客户端时间
2.接着在JS中得到这个时间。(这个肯定会吧。)
3.写倒计时的JS代码。
最简单的方法是将时间放置在windows.name中。
<script type="text/javascript">
windows.name=服务器时间
function tick()
{
var maxTime=windows.name;
将maxTime换算成秒的形式,
IF(maxTime>0)
{
进行--操作
然后将maxTime--后的值付给将要显示的标签
window.setTimeout("1000","tick()");//每秒调用一次,这样时间就会开始倒计时
}else
{
alert("嘿嘿,不许考试了,时间到了")
}
}
</script>
思路就是这样的。希望对你有帮助
这就OK了。