4

编辑:当我调用 Clock.start() 时如何传递参数以便更改 totalSeconds 的值?

我得到了一个计数器,我将它的值与计时器显示的 ID 连接起来,因为页面上会有多行计时器,但每个用户只会运行一个计时器。我想传递计时器的值,所以我知道我应该获取的计时器在哪一行,然后我将其转换为秒,最后我可以将该值分配给totalSeconds。然后也许我可以按照我想象的每件事的方式来完成这项工作。

我已经在运行的内容:我有一个计时器,除非我刷新,否则它不会显示它正在计数。当页面加载 PHP 查询 mySQL 并使用 TIMEDIFF(now(), time_log) 计算经过的时间,其中 time_log 是计时器启动的时间。

我想添加的内容:我想要做的是使用下面的 js/jquery 片段来获取我的 TIMEDIFF,然后将其用作 totalSeconds,因此 totalSeconds 不会重置并继续从 TIMEDIFF 值开始计数。

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

如果您可以定位现代浏览器,请将totalSeconds. 你可以读回localStorage
totalSecondslocalStorage

如果您必须针对较旧的浏览器,那么使用 cookie 来保存值是您的最佳选择。我会设置 cookie 日期,所以它很快就会过期。

于 2012-09-24T01:18:56.317 回答