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

SetInterval timer on multiple objects cancels after initializing

我的文档中显示了多个具有状态(状态)的对象。如果一个对象的状态设置为 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

然后只计算秒数。

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

Fiddle: https://jsfiddle.net/fsob9qfb/

尝试不使用变量变量随着每次调用函数而变化