初始化后,多个对象上的SetInterval计时器取消

时间:2017-06-15 15:12:17

标签: javascript coffeescript setinterval

我的文档中显示了多个对象,其中包含状态(状态)。如果对象的状态设置为active,我会显示一个倒计时器,以向用户显示该对象的活动时间。因此代码:

  countTimer = (el, seconds) ->
    setInterval (->
      totalSeconds = seconds
      ++totalSeconds
      hour    = Math.floor(totalSeconds / 3600)
      minute  = Math.floor((totalSeconds - (hour * 3600)) / 60)
      seconds = totalSeconds - (hour * 3600 + minute * 60)
      $(el).siblings('.status').find('.timer').text("#{hour}:#{minute}:#{seconds}")
    ), 1000

  $('.object').each (index, element) =>
    $el = $(element)
    secondsPassed = parseInt $el.data('start-time')
    if $el.data('state') == 'active'
      countTimer(element, secondsPassed)

在初始化时,脚本加载正确的时间(基于data-start-time),例如

0:1:46

然后在第一秒,每个元素的计时器取消:

0:0:46

然后只计算秒数。

不确定为什么会这样。任何建议表示赞赏。

小提琴https://jsfiddle.net/fsob9qfb/

1 个答案:

答案 0 :(得分:1)

不使用变量尝试变量变量作为每个调用函数