4

編集:Clock.start() を呼び出すときにパラメーターを渡すにはどうすればよいので、totalSeconds の値を変更できますか?

ページには複数のタイマー行がありますが、ユーザーごとに 1 つしか実行されないため、タイマー表示の ID と連結する値のカウンターを取得しました。タイマーの値を渡したいので、取得する必要があるタイマーがどの行にあるのかを知り、それを秒に変換し、最後にその値を totalSeconds に割り当てることができます。そうすれば、私がすべてを描いた方法でこれを機能させることができるかもしれません。

すでに実行しているもの: 更新しない限り、カウントアップしていることを示さないタイマーがあります。ページが PHP をロードすると、mySQL クエリが実行され、TIMEDIFF(now(), time_log) で経過時間が計算されます。ここで、time_log はタイマーが開始された時刻です。

追加したいこと: 以下の js/jquery スニペットを使用して TIMEDIFF を取得し、それを totalSeconds として使用することです。

var Clock = 
{
    totalSeconds: 0,

    start: function () {
        var self = this;

        this.interval = setInterval(function () {
          self.totalSeconds += 1;

          var ctr;
          $(".icon-play").each(function(){
              if( $(this).parent().hasClass('hide') )
                  ctr = ($(this).attr('id')).split('_');
          });

          $("#hour_" + ctr[1]).text(pad(Math.floor(self.totalSeconds/3600)));
          $("#min_" + ctr[1]).text(pad( Math.floor((self.totalSeconds/60)%60) ));
          $("#sec_" + ctr[1]).text(pad(parseInt(self.totalSeconds%60)));
        }, 1000);
    },

    pause: function () {
      clearInterval(this.interval);
      delete this.interval;
    },

    resume: function () {
      if (this.interval) this.start();
    }
};

このスクリプトについては、Speransky Danil 氏の功績によるものです。タイマーを一時停止および再開するにはどうすればよいですか?

4

2 に答える 2

5

合計秒数を記録する代わりに、開始時間を記録し、現在からタイマーを開始するまでの秒数を計算する必要があります。

さらに、開始時刻をデータベースに既に保存しているため、ページの読み込み時にそれから初期化できます。

単純に秒数を数えると、ページを更新する間隔が失われます。

編集: PHP によって生成された HTML 出力で Clock.totalSeconds を初期化できます。この時計 JS が既に機能していることは承知しています (マークアップは上に掲載されていません)。

<script type="text/javascript">
var Clock = {}; // your code above
Clock.totalSeconds = <?php echo (int)$seconds; ?>;
</script>
于 2012-09-24T01:20:24.670 に答える
1

最新のブラウザーをターゲットにできる場合はtotalSecondslocalStorage. から
読み返すことができますtotalSecondslocalStorage

古いブラウザーをターゲットにする必要がある場合は、Cookie を使用して値を保存するのが最善の方法です。クッキーの日付を設定して、かなり早く期限切れになるようにしました。

于 2012-09-24T01:18:56.317 に答える