js倒计时,即使刷新也没事源代码
function begin(totalTime){ var begin=new Date(); var hourB = begin.getHours(); var minuteB=begin.getMinutes(); var secondB=begin.getSeconds(); //截止时间 var deadline = new Date(); var hourD = hourB+totalTime/60; var minuteD = minuteB+totalTime%60; var secondD=secondB; //alert("开始时间:"+hourB+":"+minuteB+":"+secondB+"结束时间:"+hourD+":"+minuteD+":"+secondD); timer = setInterval("countDown(hourD,minuteD,secondD)", 1000); } //倒计时 function countDown(hourD,minuteD,secondD) { var now=new Date(); var hour = now.getHours(); var minute=now.getMinutes(); var second=now.getSeconds(); var leftTime=(hourD-hour)*60*60+(minuteD-minute)*60+(secondD-second);//单位:运动会口号 秒 //alert("剩余时间:"+leftTime); if (leftTime >= 0) { minutes = Math.floor(leftTime / 60); seconds = Math.floor(leftTime % 60); msg = minutes + "分" + seconds + "秒"; document.all["timer"].innerHTML = msg; if (leftTime == 5 * 60) alert('注意,还有5分钟!'); --leftTime; } else { clearInterval(timer); alert("时间到,结束!"); } }
点击按钮时,触发begin(totalTime)函数 不知道哪里错了,alert("开始时间:"+hourB+":"+minuteB+":"+secondB+"结束时间:"+hourD+":"+minuteD+":"+secondD);显示的正确,alert("剩余时间:"+leftTime);没有显示 我的思路是: //倒计时,为了防止刷新时重新计时,当点击开始时,记下当前时间 //获得的有考试总时长,当前时间+考试总时长就是结束时间, //然后根据结束时间来倒计时
timer = setInterval(function(){countDown(hourD,minuteD,secondD);}, 1000);
如果用户刷新页面的话,刷新的时候提示会自动提交试卷,存在cookie里面也可以删除了,如果用ajax来记录用户做了多久,就会很多无用的请求,而且刷新后,还要把刚才用户做的结果给还原,麻烦。
每打开一次页面就去session那里找个开始考试的时间,没有就是now,并存入session。
倒计时,为了防止刷新时重新计时,当点击开始时,记下当前时间 ================================================ 这一块功能放服务器,用session保存。别的功能要用到时间的都去session里找。
我加了一个函数 function _countDown(hourD,minuteD,secondD){ return function(){ countDown(hourD,minuteD,secondD); } }
|