用js做 客户端刷新一次则会重新计时  如何根据服务端时间倒计时呢?谢谢

解决方案 »

  1.   


    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>time - left</title> 
    <SCRIPT LANGUAGE="JavaScript"> 
    <!-- 
    t=45; //总时间 
    var maxtime; 
    stc=document.cookie.split("; "); 
    stt=''; 
    lt=45*60; 
    for(var i=0;i<stc.length;i++){ 
    if(stc[i].split("=")[0]=="st"){ 
    stt=parseInt(stc[i].split("=")[1]); 
    break; 


    function setcookie(){ 
    var epd=new Date(); 
    epd.setDate(epd.getMinutes()+45); 
    document.cookie="st="+gtn+";expires="+epd.toGMTString(); 
    lt=45*60; 
    alert("Time start.\ntime left 45 mins."); 

    var epd=new Date(); 
    gtn=Math.floor(epd.getTime()/1000); 
    if(stt==''){ 
    setcookie(); 
    }else{ 
    lt=stt-gtn+45*60; 

    function CountDown(){ 
    if(lt>=0){ 
    minutes = Math.floor(lt/60); 
    seconds = Math.floor(lt%60); 
    msg = "Time left - "+minutes+" : "+seconds+" ."; 
    document.all["timer"].innerHTML = msg; 
    if(lt == 10*60) alert('There is 10 mins left!'); //提醒时间 
    --lt; 

    else{ 
    clearInterval(timer); 
    alert("Time is up!"); 


    timer = setInterval("CountDown()",1000); 
    //--> 
    </SCRIPT> 
    </head> <body> 
    <div id="timer" style="color:#666666; float:left;"></div> 
    <div style="float:right; color:#666666;"> 
    timeset 
    <input type="text" id="txtip1" value="45" style="height:12px;" /> 
    <a href="#" onClick="javascript:setcookie();return false;">Reset time.</a></div> 
    </body> 
    </html> 
    <script language="javascript" type="text/javascript"> 
    var interval = 1000; 
    function ShowCountDown(year,month,day,divname) 

    var now = new Date(); 
    var endDate = new Date(year, month-1, day); 
    var leftTime=endDate.getTime()-now.getTime(); 
    var leftsecond = parseInt(leftTime/1000); 
    //var day1=parseInt(leftsecond/(24*60*60*6)); 
    var day1=Math.floor(leftsecond/(60*60*24)); 
    var hour=Math.floor((leftsecond-day1*24*60*60)/3600); 
    var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60); 
    var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60); var cc = document.getElementById(divname); 
    cc.innerHTML = "距离"+year+"年"+month+"月"+day+"日还有:"+day1+"天"+hour+"小时"+minute+"分"+second; 

    window.setInterval(function(){ShowCountDown(2007,10,10,'divdown1');}, interval); </script> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
    <title>倒计时</title> 
    </head> 
    <body> 
    <div id="divdown1"></div> 
    </body> 
    </html> 
    参考
      

  2.   

    楼上 你的代码 时间是获得客户端的时间吧?
    我改成用服务端的时间 但是刷新的时候  都会 重新倒计时 什么问题呢?
    aspx页面
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test4.aspx.cs" Inherits="Test4" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>kkk </title>
      <script type="text/javascript">    
    <!-- 
    t=45; //总时间 
    var maxtime; 
    stc=document.cookie.split("; "); 
    stt=''; 
    lt=45*60; 
    for(var i=0;i<stc.length;i++){ 
    if(stc[i].split("=")[0]=="st"){ 
    stt=parseInt(stc[i].split("=")[1]); 
    break; 

    } function setcookie(){ 
    var   oHttp   =   new   ActiveXObject("Microsoft.XMLHTTP");   
      oHttp.open("POST","getTime.aspx",false);   
      oHttp.send();
    var epd=new Date(oHttp.responseText); 
    epd.setDate(epd.getMinutes()+45); 
    document.cookie="st="+gtn+";expires="+epd.toGMTString(); 
    lt=45*60; 
    alert("Time start.\ntime left 45 mins."); 

    var   oHttp   =   new   ActiveXObject("Microsoft.XMLHTTP");   
      oHttp.open("POST","getTime.aspx",false);   
      oHttp.send();
    var epd=new Date(oHttp.responseText);
    gtn=Math.floor(epd.getTime()/1000); 
    if(stt==''){ 
    setcookie(); 
    }else{ lt=stt-gtn+45*60; 

    function CountDown(){ 
    if(lt>=0){ 
    minutes = Math.floor(lt/60); 
    seconds = Math.floor(lt%60); 
    msg = "Time left - "+minutes+" : "+seconds+" ."; 
    document.all["timer"].innerHTML = msg; 
    if(lt == 10*60) alert('There is 10 mins left!'); //提醒时间 
    --lt; 

    else{ 
    clearInterval(timer); 
    alert("Time is up!"); 


    timer = setInterval("CountDown()",1000); 
    //--> 
    </script>
    </head>
    <body>
     <div id="timer" style="color:#666666; float:left;"></div> 
     <div id="divdown1"></div> 
    <div style="float:right; color:#666666;"> 
    timeset 
    <input type="text" id="txtip1" value="45" style="height:12px;" /> 
    <a href="#" onclick="javascript:setcookie();return false;">Reset time.</a></div> 
    </body> 
    </html>getTime.aspx
        <% =DateTime.Now %> 
      

  3.   

    和服务器端通信吧
    Session也好,cookie也好。总之保存一个开始时间。然后就持续通信或者获取时间
      

  4.   

    乱来
     <% =DateTime.Now %> 获取的也是客户端时间
      

  5.   

    1.首先将服务器上的一个时间赋值给一个控件(标签了,隐藏域。。)
    2.接着在JS中得到这个时间。(这个肯定会吧。)
    3.写倒计时的JS代码。
       最简单的方法是将时间放置在windows.name中。
        
         <script type="text/javascript">    
        windows.name=服务器时间
         function tick()
        {
          var maxTime=windows.name;
          
          将maxTime换算成秒的形式,
            IF(maxTime>0)       
            {
            进行--操作
             然后将maxTime--后的值付给将要显示的标签
              window.setTimeout("1000","tick()");//每秒调用一次,这样时间就会开始倒计时
         
           }else
           {
             alert("嘿嘿,不许考试了,时间到了")
            }
           
        }
        </script>
      
       思路就是这样的。希望对你有帮助
      

  6.   

    不好意思,刚才少写了点东西,就是maxTime进行--操作后,将这个值要赋值给windows.name
    这就OK了。
      

  7.   

    获得服务器时间的代码是在cs文件中么? 在Page_load中?