开始考试时开始计时,点击提交答案按钮后,另一个考生进入考试后倒计时没有重新计时,怎么办?

var ksTime; //定义考试时间以分钟计算 ksTime = 60;//设置时间 这里设置为0.1代表是6秒,测试用 if(readCookie("ss")==""){ setCookie("ss",new Date(),ksTime/60); } function sT(){ var tti = new Date(); var lt = parseInt((tti-new Date(readCookie("ss")))/1000) if((ksTime*60-lt)<0){ setCookie("ss",new Date(),0); alert("考试时间到!\n即将提交试卷!"); document.forms[0].submit(); }else{ lm = Math.floor(lt / 60); ls = lt % 60; allY = ksTime*60-lt; ym = Math.floor(allY / 60); ys = allY % 60; document.getElementById("tTime").innerHTML = "考试已经开始了" + lm + "分" + ls + "秒" + ",剩余" + ym + "分" + ys + "秒"; var ttt = setTimeout("sT()",1000); } } function readCookie(name) { var cookieValue = ""; var search = name + "="; if(document.cookie.length > 0) { offset = document.cookie.indexOf(search); if (offset != -1) { offset += search.length; end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; cookieValue = document.cookie.substring(offset, end) } } return cookieValue; } function setCookie(name, value, hours) { var expire = ""; if(hours != null) { expire = new Date((new Date()).getTime() + hours * 3600000); expire = "; expires=" + expire.toGMTString(); } document.cookie = name + "=" + value + expire; }








先把他登录的用户退出,然后登你的用户名就可以了呀

没问题吧,不过你的代码少了个dom元素tTime


    <script type="text/javascript">
 var ksTime; //定义考试时间以分钟计算
    ksTime = 0.5;//设置时间 这里设置为0.1代表是6秒,测试用
    if(readCookie("ss")==""){
        setCookie("ss",new Date(),ksTime/60);
    }
    function sT(){
        var tti = new Date();
        var lt  = parseInt((tti-new Date(readCookie("ss")))/1000)
        if((ksTime*60-lt)<0){
            setCookie("ss",new Date(),0);
            alert("考试时间到!\n即将提交试卷!");
            document.forms[0].submit();
        }else{
            lm = Math.floor(lt / 60);
            ls = lt % 60;
            allY = ksTime*60-lt;
            ym = Math.floor(allY / 60);
            ys = allY % 60;
            document.getElementById("tTime").innerHTML = "考试已经开始了" + lm + "分" + ls + "秒" + ",剩余"  + ym + "分" + ys + "秒";
            var ttt = setTimeout("sT()",1000);
        }
    }
    function readCookie(name) { 
        var cookieValue = ""; 
        var search = name + "="; 
        if(document.cookie.length > 0) { 
            offset = document.cookie.indexOf(search); 
            if (offset != -1) { 
                offset += search.length; 
                end = document.cookie.indexOf(";", offset); 
                if (end == -1) 
                    end = document.cookie.length; 
                cookieValue = document.cookie.substring(offset, end) 
            } 
        } 
        return cookieValue; 
    }  
    function setCookie(name, value, hours) { 
        var expire = ""; 
        if(hours != null) { 
            expire = new Date((new Date()).getTime() + hours * 3600000); 
            expire = "; expires=" + expire.toGMTString(); 
        } 
        document.cookie = name + "=" + value + expire; 
    }
    </script>

    <body onload="sT()">
        <div id="tTime"></div>
     <form action="" method="post">
       <input type="submit" value=" 提交答卷 " name="Submit" />
         <td colspan="3"><div align="center">
             <input type="submit" value=" 提交答卷 " name="Submit" />
           </div></td>
                    </form>
   </body>

当你提交的时候写一个标识,当下次在有人点击的时候让这个表示从零重新开始累加

你设置了expires有效期,过期了导致sT函数读取到空的值,所以lt会得到错误的时间,显示NaN的值,而不断执行else分支重启计时器。

你应该同时判断cookie是否已经失效,失效也算是结算了

  function sT(){
        var tti = new Date();
        var s = readCookie("ss");////单独出来
        var lt  = parseInt((tti-new Date(readCookie("ss")))/1000)
        if (s == '' || (ksTime * 60 - lt) < 0) {//判断cookie是否已经失效,失效s就是空,需要多增加一个判断

            setCookie("ss",new Date(),0);
            alert("考试时间到!\n即将提交试卷!");
            document.forms[0].submit();
        }else{
            lm = Math.floor(lt / 60);
            ls = lt % 60;
            allY = ksTime*60-lt;
            ym = Math.floor(allY / 60);
            ys = allY % 60;
            document.getElementById("tTime").innerHTML = "考试已经开始了" + lm + "分" + ls + "秒" + ",剩余"  + ym + "分" + ys + "秒";
            var ttt = setTimeout("sT()",1000);
        }
    }