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);没有显示
我的思路是:
//倒计时,为了防止刷新时重新计时,当点击开始时,记下当前时间
//获得的有考试总时长,当前时间+考试总时长就是结束时间,
//然后根据结束时间来倒计时
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);没有显示
我的思路是:
//倒计时,为了防止刷新时重新计时,当点击开始时,记下当前时间
//获得的有考试总时长,当前时间+考试总时长就是结束时间,
//然后根据结束时间来倒计时
setInterval("countDown(hourD,minuteD,secondD)", 1000);另外,要刷新仍可计时,你需要把当前的时间记录到cookie里面在线考试可以采取ajax方法提交,或者采用隐藏的iframe接收数据,可避免页面刷新
这个我没有说清楚,提交试题时我是用了ajax,
这个是另外的,但是我也不想让他刷新,我没有用过cookie,没有想过用cookie,我的变量名怎么改才是正确的,求指教,我的方式是很容易想到的,所以就这么写了
我做的简单,现在没有考虑那么多,我是因为获得试题时要转到一个action处理,struts.xml配置中跳转的页面回来就是刷新了,我现在不是说考试时考生的刷新,而是说这个刷新
ps:我是把题目隐藏了,当点击某个类型的题目时,让那一块显示,其他题型隐藏
那个,我不知道什么时候再打开页面,就是action处理之后就跳回来了,如果按照我的想法,
//倒计时,为了防止刷新时重新计时,当点击开始时,记下当前时间
//获得的有考试总时长,当前时间+考试总时长就是结束时间,
//然后根据结束时间来倒计时
应该怎么做呢
================================================
这一块功能放服务器,用session保存。别的功能要用到时间的都去session里找。
我加了一个函数
function _countDown(hourD,minuteD,secondD){
return function(){
countDown(hourD,minuteD,secondD);
}
}解决了,多谢各位