【问题标题】:Using moment.js to calculate elapsed time?使用 moment.js 计算经过的时间?
【发布时间】:2014-08-19 23:11:03
【问题描述】:
  var currentTimeArray = [];
  function currentTime(){
    var time = moment();
    return currentTimeArray.push(time);
  }

  $('.next-fieldgroup').on('click', function(e){
    e.preventDefault();
    currentTime();

    var endTime = $(currentTimeArray).last();
    var startTime = currentTimeArray[0];
    var duration = moment.duration(endTime.diff(startTime));
    var elapsedTime = duration().asMinutes();

    $('#timer-counter').text( elapsedTime );
  });

它应该做什么......

  1. 点击商店现在进入阵列
  2. 点击比较 arr[0] 和 arr.last() 以获取经过的时间
  3. 以分钟为单位更新 div

我希望输出喜欢:

“经过时间:12 分钟”

我收到以下错误:

Uncaught TypeError: undefined is not a function

【问题讨论】:

  • 错误指示是哪一行?
  • @pat var duration = moment.duration(endTime.diff(startTime));这一行和--fps没区别

标签: javascript jquery momentjs


【解决方案1】:

jQuery 方法返回包装在 jQuery 中的对象,因此您的 endTime 是一个 jQuery 包装的时刻对象。并且 jQuery 没有 .diff 方法,因此出现错误。使用.get(0)[0]获取实际的moment对象

var endTime = $(currentTimeArray).last().get(0);

【讨论】:

  • 其实get(0)实际上导致对象返回未定义。
  • 如果我这样做:var endTime = $(currentTimeArray).last()[0]['_d']; 我得到实际的日期时间字符串:'Tue Aug 19 2014 19:31:36 GMT-0400 (EDT)'
  • 然后使用.last()[0],但它应该和.get(0)做同样的事情
  • 我仍然收到这种类型的错误:var duration = moment(duration( endTime.diff(startTime) )); error undefined is not a function --- 为什么?我通过了两次有效时间,不是吗?我可以控制台记录两者,它们会显示...
  • moment(duration( 是错字吗?应该是moment.duration(
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
相关资源
最近更新 更多