0

私は、00:00:00から始まるタイマーを表示するためのレールと書かれたjavascriptコードに取り組んでいます。

[注:タイマーの開始と停止には、開始停止の 2 つのボタンがあります]

    関数タイマー(){
    var 秒、分、時間。
    秒=0;
    分= 0;
    時間=0;

    秒++;

    if(秒>=60){
    最小++;
    秒=0;
    }

    if(分>=60){
    時間++;
    分= 0;
    }

    document.getElementById("hrs").innerHTML=hrs;
    document.getElementById("min").innerHTML=min;
    document.getElementById("sec").innerHTML=sec;

    setTimeout(タイマー(), 1000);
    }

現在、これは私のレール Web アプリケーションで正常に機能しています。しかし、別のページにリダイレクトしてこのページに戻ると、タイマーの値が失われます。

ここでは、ページのリダイレクト後もクロックを継続的に実行したいと考えています。

これを修正する方法は?

4

4 に答える 4

1

リダイレクトしているため、java-script タイマーは機能しません。代わりにシステム時間を使用する必要があります。ページからのリダイレクト中にセッション変数を利用して、タイマーが開始されたときのタイムスタンプを保存できます。

于 2013-07-24T13:17:14.953 に答える
1

タイムスタンプを取得します...どこかに保存し、変数として次のページに渡します

var start=new Date().getTime();

時間が経つように

var currentMillisecondsPassed=new Date().getTime()-start;

hh:mm:ss.msecこれをまたは何かに変換します...

次のページにはstart値だけが必要で、それを渡す方法はたくさんあります.. php、js、get、post....そしてもっとたくさん。

setTimeout()タイマーの場合も正確ではありません。

これは、クエリ文字列で値を渡す例です。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>timer</title>
<script>
window.onload=function(){
 var pt=window.location.search.split('=')[1],
 e=document.body.childNodes,
 t=e[0],
 s=(pt*1||0),
 interval,
 ms2Time=function(a) {
  var ms=parseInt((a%1000)/100),
  s=parseInt((a/1000)%60),
  m=parseInt((a/(1000*60))%60),
  h=parseInt((a/(1000*60*60))%24);
  return (h<10?'0'+h:h)+':'+(m<10?'0'+m:m)+':'+(s<10?'0'+s:s)+'.'+ms;
 },
 Start=function(){
  s=new Date().getTime();
  interval=window.setInterval(getcurrent,100);
 },
 Stop=function(){
  window.clearInterval(interval);
  s=0;
 },
 getcurrent=function(){
  t.textContent=ms2Time(new Date().getTime()-s);
 },
 changepage=function(){
  window.location='?start='+s;
 };
 e[1].addEventListener('click',Start,false);
 e[2].addEventListener('click',Stop,false);
 e[3].addEventListener('click',changepage,false);
 if(pt&&pt!=0){
  interval=window.setInterval(getcurrent,100);
 }
}
</script>
</head>
<body><div id="timer"></div><button>start</button><button>stop</button><button>anotherpage</button></body>
</html>

私が言ったように...開始値はどこにでも保存できます...だから、好みがあれば...教えてください。uのコードを変更できます。

于 2013-07-24T13:20:13.087 に答える
0

sec, min, hourセッションまたは Cookie を使用して、変数の初期値を設定できます。そして、タイマーをバックグラウンドで実行するすべてのページにこのファイルを含めます。

function timer(){

sec++;

if(sec>=60){
min++;
sec=0;
}

if(min>=60){
hrs++;
min=0;
}

setTimeout(timer(), 1000);
}

そして、タイマーを表示しているページでのみDOMに値を追加します。

于 2013-07-24T13:19:18.003 に答える
-1

サーバーからデフォルトのsecmin、およびhrs値を送信してみてください。たとえば、それらを coockie に保存します。

于 2013-07-24T13:18:24.820 に答える