您的位置:首页 > 其它

【工作笔记】关于考试系统倒计时注意事项

2018-01-26 11:00 351 查看
1.当前获取时间和页面加载获取的时间应都从服务器上获取。

 服务器端时间获取如下:

 Date endTime=new Date();
  SimpleDateFormat
sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

 //转为此格式方便后面生成Date对象,调用其方法getTime()。

  String
time= sdf.format(endTime);

 request.getSession().setAttribute("endTime",time);//将界面加载时获取的时间用session保存。

 //endTime+paperTime(考试时间)即为最终考试结束时间。

2.在jsp页面上获取服务器传的endTime

 <input id="endTime" type="hidden" value="${endTime }" ></input>

3.JavaScript中获取服务器时间,倒计时制作

<script>

  var
endTime = document.getElementById("endTime").value;  

 //endTime
此时为页面加载进来时的服务器时间,要在后面加上考试时间即为考试结束时间

 
var newDate = new Date(endTime);//生成Date对象 newDate,参数是endTime(已在后台fomat转了格式,直接用)
  var
paperTime;
  paperTime=
document.getElementById("paperTime").value;// 考试时间,单位分钟

 
  paperTime=paperTime*60;//转为单位秒

 
  var toHour=Math.floor(paperTime/3600); //90分钟则toHour=1
  var
toMinute=Math.floor((paperTime-3600*toHour)/60);//toMinute=30
  var
toSecond=Math.floor(paperTime-3600*toHour-60*toMinute) //toSecond=0

 
//90分钟即转为了1小时30分0秒

  //加上考试时间
  
newDate.setHours(newDate.getHours()+toHour); 
  newDate.setMinutes(newDate.getMinutes()+toMinute);
  newDate.setSeconds(newDate.getSeconds()+toSecond);
 

  //【划重点】在页面上获取此时服务器时间,不是加载时的服务器时间!
  var
nowTime = new Date(<%=new java.util.Date().getTime()%>);

 function run() {       
   
 nowTime.setSeconds(nowTime.getSeconds() + 1);
 }   

 setInterval("run();", 1000);

//每一秒运行一次function
run,一次加一秒。 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

  function
timer()  
   {    

   
   var totalSecond = Math.floor((newDate.getTime()-nowTime.getTime())/1000);
//计算剩余秒数   
//date.getTime()方法返回long类型的毫秒数

   
   if(totalSecond==0){  //当剩余秒数为0时提交表单

       
   $("#formdata").submit();

     }

   
 var remainHour=Math.floor(totalSecond/3600); //剩余小时

     var remainMinute=Math.floor((totalSecond-3600*remainHour)/60);//剩余分钟    

   
 var remainSecond=Math.floor(totalSecond-3600*remainHour-60*remainMinute);//剩余秒数

   
 $("#remainHour").text(remainHour+"小时");

   
 $("#remainMinute").text(remainMinute+"分钟");

   
 $("#remainSecond").text(remainSecond+"秒");
 }  
 setInterval(timer,1000);    </script> 

4.页面显示

 <label>剩余时间:

       
 <span id="remainHour"></span>

       
 <span id="remainMinute"></span>

       
 <span id="remainSecond"></span>

    </label>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  考试计时器