COOKIE记录时间吧,要不然就用SESSION

解决方案 »

  1.   

    可用session或cookies来记录考试的开始时间和结束时间,当刷新时就从session或cookies中取值
      

  2.   

    <%
    Session("tryTime")=Date()
    TimeGet=Session("tryTime")''这是ASP控制的时间
    %>
     <SCRIPT language=JavaScript> 
    var id, iM = 0, iS = 1; 
    start ="<%TimeGet%>"; 
      

  3.   


    <% 
    Session("tryTime")=now() 
    TimeGet=Session("tryTime")''这是ASP控制的时间 
    %> 
    <FORM name=myform>剩余时间: <INPUT class=text2 size=10 value=剩余时间 
          name=clock> <INPUT type=hidden size=50 name=times>  
    <SCRIPT language=JavaScript> 
    var id, iM = 0, iS = 1; 
    var start1 =" <%TimeGet%>"; 
    var start=new Date(start1)
    if (document.myform.times.value==""){ 
    starts=start.getTime(); 
    }else{ 
    starts=document.myform.times.value; 

    //document.myform.clock.value=start.getSeconds(); 
    function go() 

    now = new Date(); 
    time = (2700000-(now.getTime()-starts))/1000; 
    //time = (10000-(now.getTime()-starts))/1000; 
    time = Math.floor( time); 
    iS = time % 60; 
    iM = Math.floor( time / 60); if ( iS < 10){ 
    document.myform.clock.value = " " + iM + ":0" + iS; 
    }else{ 
    document.myform.clock.value = " " + iM + ":" + iS; 

    document.myform.times.value =starts; 
    if (time==300){ 
    alert("请抓紧时间答题,距交卷还有5分钟。"); 

    if (time==0){ 
    alert("时间到,请交卷。"); 
    window.location="test.asp?gopage=jiaojuan&choose=" + document.form1.choose.value; 

    id = setTimeout( "go()", 1000); } 
    go(); 
          </SCRIPT> 
    </form> 
      

  4.   

    <FORM name=myform>剩余时间: <INPUT class=text2 size=10 value="剩余时间" name="clock" id="clock"> <INPUT type=hidden size=50 name=times>
    <SCRIPT language=JavaScript> 
    var endVar = "2008/9/8 00:30:00"; //考试截止时间
    var allTimeVar = 45; //考试时间长度 分
    var iM = 0;
    var iS = 0;function showTime()
    {
    var end = new Date(endVar);
    var start = new Date(); 
    var timeDiff = Math.floor((end - start) / 1000); //当前时间与截止时间之间相差秒数
    var iM = Math.floor(timeDiff / 60);
    var iS = (timeDiff % 60); 
    if(iM > allTimeVar * 60) //考试还没开始呢!
    {
    document.getElementById("clock").value = "考试还未开始";
    }
    else
    {
    document.getElementById("clock").value = iM + ":" + (iS < 10 ? "0" + iS : iS);
    if(timeDiff == 300) alert("请抓紧时间答题,距交卷还有5分钟。"); 
    if(timeDiff <= 0) alert("时间到,请交卷。"); 
    }
    }
    setInterval("showTime()",1000);
    </SCRIPT> 
      

  5.   

    <script>
    var oo,start,end,time,t1,t2,str,myCookie,searchName,shijian
    function setcookie(){ 
    if(!is())
    {shijian =45*1000*60;document.cookie="timerr="+shijian;}}function is(){
    myCookie=document.cookie + ";"
    searchName="timerr="
    start = myCookie.indexOf(searchName); 
    if(start!=-1)
    {return true}
    else
    {return false}
    }function strat(){
    if(is())
    {
    start+= searchName.length
     end =myCookie.indexOf(";",start)
     time= unescape(myCookie.substring(start, end)); 
    t1 = Math.floor(parseInt(time)/(1000*60))
    t2=(parseInt(time)-t1*1000*60)/1000
    str="剩余时间:"+t1+"分"+t2+"秒"
    document.getElementById("show").innerHTML=str;
    time=time-1000;
    document.cookie="timerr="+time;
    oo=setTimeout("strat()",1000)
    }
    else
    {document.getElementById("show").innerHTML="剩余时间:45分0秒"}
    }function again(){clearTimeout(oo);strat();}
    </script>
    <body onLoad="strat()">
    <span id="show"></span>
    <br><br>
    <input id="kaoshi" value="开始考试"  type="button" onClick="javascrite:setcookie();again()" />
    </body>
    刚学完时间函数和cookie正好拿来练练手.
    写的很差,连续刷新或者连续按"开始考试"按纽 时间会走快
    我只是来练练手的,还是参考前面2位前辈的吧
      

  6.   

    <% 
    Session("tryTime")="2008/9/9 09:50:00" 
    TimeGet=Session("tryTime")''这是ASP控制的时间 
    %> 
    <FORM name=myform>剩余时间: <INPUT class=text2 size=10 value=剩余时间 
          name=clock> <INPUT type=hidden size=50 name=times>  
    <SCRIPT language=JavaScript> 
    var id, iM = 0, iS = 1; 
    var start1 =" <%TimeGet%>"; 
    var start=new Date(start1)
    if (document.myform.times.value==""){ 
    starts=start.getTime(); 
    }else{ 
    starts=document.myform.times.value; 

    //document.myform.clock.value=start.getSeconds(); 
    function go() 

    now = new Date(); 
    time = (2700000-(now.getTime()-starts))/1000; 
    //time = (10000-(now.getTime()-starts))/1000; 
    time = Math.floor( time); 
    iS = time % 60; 
    iM = Math.floor( time / 60); if ( iS < 10){ 
    document.myform.clock.value = " " + iM + ":0" + iS; 
    }else{ 
    document.myform.clock.value = " " + iM + ":" + iS; 

    document.myform.times.value =starts; 
    if (time==300){ 
    alert("请抓紧时间答题,距交卷还有5分钟。"); 

    if (time==0){ 
    alert("时间到,请交卷。"); 
    window.location="test.asp?gopage=jiaojuan&choose=" + document.form1.choose.value; 

    id = setTimeout( "go()", 1000); } 
    go(); 
          </SCRIPT> 
    </form> 
      

  7.   

    粗心了,还是漏了一个=号,看下面这个:<FORM name=myform>剩余时间: <INPUT class=text2 size=10 value=剩余时间 
          name=clock> <INPUT type=hidden size=50 name=times>  
    <% 
    Session("tryTime")="2008/9/9 09:50:00" '这里必须是设定的一个时间,你可以是在登陆的时候设置
    TimeGet=Session("tryTime")''这是ASP控制的时间 
    %> 
    <SCRIPT language=JavaScript> 
    var id, iM = 0, iS = 1; 
    var start1 ="<%=TimeGet%>"; 
    var start=new Date(start1) 
    if (document.myform.times.value==""){ 
    starts=start.getTime(); 
    }else{ 
    starts=document.myform.times.value; 

    //document.myform.clock.value=start.getSeconds(); 
    function go() 

    now = new Date(); 
    time = (2700000-(now.getTime()-starts))/1000; 
    //time = (10000-(now.getTime()-starts))/1000; 
    time = Math.floor( time); 
    iS = time % 60; 
    iM = Math.floor( time / 60); if ( iS < 10){ 
    document.myform.clock.value = " " + iM + ":0" + iS; 
    }else{ 
    document.myform.clock.value = " " + iM + ":" + iS; 

    document.myform.times.value =starts; 
    if (time==300){ 
    alert("请抓紧时间答题,距交卷还有5分钟。"); 

    if (time==0){ 
    alert("时间到,请交卷。"); 
    window.location="test.asp?gopage=jiaojuan&choose=" + document.form1.choose.value; 

    id = setTimeout( "go()", 1000); } 
    go(); 
          </SCRIPT> 
    </form> 
      

  8.   

    以前写的一个计时器,结合cookie改了下
    剩余时间:<span id="spTimer"></span><br /><input type="button" id="btnStart" onclick="Start(this)" value="开始答题" />
    <script>//===========辅助函数
    var timer,CookieName='remaidtime';//这里定义计时器实例名称和cookie的名称
    window.onload=function(){
      var m=ReadCookie();
      if(m){
        $("btnStart").disabled=true;
        $("btnStart").value="正在答题";
        m=m[1].split(":");
        timer=new Timer(parseInt(m[0]),parseInt(m[1]),parseInt(m[2]),'spTimer');
      }
    }
    function Start(btn){
      if(btn.value=="开始答题"){
        timer=new Timer(0,45,0,'spTimer');
        btn.value="正在答题";
        btn.disabled=true;
      }
    }
    function SaveCookie(CookieValue){
        var d=new Date();
        d.setMinutes(d.getMinutes()+10);//有效时间10分钟
        document.cookie=CookieName+"="+CookieValue+";expires="+d.toGMTString();
      }
    function ReadCookie(){
        var reg=new RegExp(CookieName+"=([^;]+);?","ig");
        var cstr=document.cookie;
        return reg.exec(cstr);
      }
    function ClearCookie(){
        var d=new Date();
        d.setMinutes(d.getMinutes()-10);
        document.cookie=CookieName+"=;expires="+d.toGMTString();
      }window.onbeforeunload=function(){ if(timer)SaveCookie(timer.hour+":"+timer.minute+":"+timer.second);}
    function FormatNumber(Num){if(Num<10)return "0"+Num;else return Num.toString();}
    function $(Id){if(typeof(Id)=="string")return document.getElementById(Id);else return Id;}
    //===========Class of Timer=============
    //参数类表
    //hour:小时,整数
    //minute:分钟,整数
    //second:秒,整数
    //ObjId:显示剩余时间的对象的id
    function Timer(hour,minute,second,ObjId)
    {
      var PackUp=this;
      
      this.Go=function(){
        if (this.hour==0&&this.second==1&&this.minute==5) alert("请抓紧时间答题,距交卷还有5分钟。");     if(this.hour<1&&this.minute<1&&this.second<1){
          clearInterval(this.timer);
          this.timer=null;
          ClearCookie(CookieName);//删除cookie
          alert("时间到,请交卷。");
          window.location="test.asp?gopage=jiaojuan&choose=" + document.form1.choose.value; ;  
          return;
        }
        this.second--;
        if(this.second<1){
          if(this.minute>0){
           this.second=59;
           this.minute--;
          }
          else if(this.hour>0){
            this.minute=59;
            this.hour--;
          }
        }
        
        this.obj.innerHTML=FormatNumber(this.hour)+":"+FormatNumber(this.minute)+":"+FormatNumber(this.second);
      }
      
      this.hour=hour;
      this.minute=minute;
      this.second=second;
      this.obj=$(ObjId);
      if(!this.obj){
        alert("请设置要显示时间的对象!")
        return;
      }  
      this.obj.innerHTML=FormatNumber(this.hour)+":"+FormatNumber(this.minute)+":"+FormatNumber(this.second);
      if(hour<1&&minute<1&&second<1){
        alert("此记时器无效!");
        return;
      }
      this.timer=setInterval(function(){PackUp.Go();},1000);  
    }
      

  9.   


    调用服务器时间,如果用户本机就是服务器,另设有权限限制的WINDOWS用户登录进行答题.
      

  10.   

    楼主要的效果还是用Cookie做好
      

  11.   

    12楼的朋友在吗,你的这个程序运一次后再运次就提示计数器无效,我看着有删除cookie代码,怎么没有删除掉呢?
      

  12.   

    存入cookie时忘记判断这个计时器是否已经完成了^____^-window.onbeforeunload=function(){
    //修改这里
      if(timer&&(timer.hour!=0||timer.minute!=0||timer.second!=0))
             SaveCookie(timer.hour+":"+timer.minute+":"+timer.second);
    }