1

このコードはhereから取得しました。ただし、私は JS があまり得意ではないので、リロード時にタイマーがリセットされないようにするために少し助けが必要です。また、時間、分、秒ではなく、日数をカウントダウンしたいです。誰か助けてくれませんか?

<!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" xml:lang="en" lang="en">

<head>
  <title></title>
<script>
/*<![CDATA[*/

function zxcCountDown(id,mess,secs,mins,hrs,days){
 var obj=document.getElementById(id);
 var oop=obj.oop
 if (!oop){
  obj.oop=new zxcCountDownOOP(obj);
 }
 obj.oop.start(mess,secs,mins,hrs,days);
}

function zxcCountDownOOP(obj,mess){
 this.obj=obj;
 this.to=null;
}

zxcCountDownOOP.prototype={

 start:function(mess,secs,mins,hrs,days){
  clearTimeout(this.to);
  this.mess=mess;
  this.mhd=[mins,hrs,days];
  var date=new Date();
  this.fin=new Date(date.getFullYear(),date.getMonth(),date.getDate()+(days||0),date.getHours()+(hrs||0),date.getMinutes()+(mins||0),date.getSeconds()+(secs||0));
  this.cng();
 },

 cng:function(){
  var now=new Date(),s=(this.fin-now)/1000+1,d=Math.floor(s/60/60/24),h=Math.floor(s/60/60-d*24),m=Math.floor(s/60-h*60-d*24*60),s=Math.floor(s-m*60-h*3600-d*24*60*60);
  if (this.fin-now>-500){
   this.obj.innerHTML=(this.mhd[2]?(d>9?d:'0'+d)+' days ':'')+(this.mhd[1]||this.mhd[2]?(h>9?h:'0'+h)+' hours ':'')+(this.mhd[0]||this.mhd[1]||this.mhd[2]?(m>9?m:'0'+m)+' minutes ':'')+(s>9?s:'0'+s)+' seconds';
   this.to=setTimeout(function(oop){ return function(){ oop.cng(); }}(this),1000);
  }
  else if (this.mess){
   this.obj.innerHTML=this.mess;
  }
 }

}

/*]]>*/
</script></head>

<body onload="zxcCountDown('tst','message',20); zxcCountDown('tst1','message 1',0,0,2,0);">

<span id="tst" ></span> <input type="button" name="" value="Re-Start" onmouseup="zxcCountDown('tst','message',20);"/>
<br />
<span id="tst1" ></span>
</body>

</html>
4

2 に答える 2

2

技術的には、できません。Javascript はロード時に状態を維持しません。ただし、いくつかのオプションがあります。

  1. ローカル ストレージを使用して現在のカウントを保存し、ページの読み込み時に再度取得することができます。ただし、これは新しい API であり、後方互換性はありません。 http://diveintohtml5.info/storage.html
  2. 値を Cookie に保存し、ページのリロード時に Cookie を取得できます。 http://www.quirksmode.org/js/cookies.html

それはそれについてです。

于 2013-01-25T09:05:17.903 に答える
0

javascript はクライアント側のスクリプトです。また、ページがリロードされるたびにリロードされます。変数を永続化するには、スクリプトの外部にあるものを調べる必要があります。

Cookie を使用しようとしましたか?Cookie は、変数の値を必要なだけ保存できます。

リロードごとにCookieから値を取得するだけです

于 2013-01-25T09:04:31.797 に答える