【问题标题】:jQuery - getting prior value from within setIntervaljQuery - 从 setInterval 中获取先验值
【发布时间】:2013-06-12 17:20:29
【问题描述】:

我想在网页内的setInterval 内做一些事情(目前只是通过写信给console.log 进行测试)。当间隔循环时,我想传入间隔的 previous 值。我目前正在尝试执行以下操作:

setInterval(function() {
    var lastTime, shiftTime = new Date();
    var myTimeString;
    var lastTimeString;
    myTimeString =  ('00' + (shiftTime.getHours())).slice(-2) +":"+('00' + (shiftTime.getMinutes())).slice(-2) + ":"+ ('00' + (shiftTime.getSeconds())).slice(-2) + "."+ ('000' + (shiftTime.getMilliseconds())).slice(-3);
    newInterval = myTimeString;
    lastTime  = lastTime - 300000;
    lastTimeString =  ('00' + (lastTime.getHours())).slice(-2) +":"+('00' + (lastTime.getMinutes())).slice(-2) + ":"+ ('00' + (lastTime.getSeconds())).slice(-2) + "."+ ('000' + (lastTime.getMilliseconds())).slice(-3);
    lastInterval = lastTimeString;
    console.log("lastInterval = " + lastInterval + "   thisInterval = " + newInterval);
    }, 300000);

上面目前说的是lastTime.getHours() is not a function

如何从setInterval 函数中获取最后一个间隔值(我最终需要日期和时间)?

有没有比我的方法更好的方法来做到这一点?

谢谢!

【问题讨论】:

    标签: jquery datetime setinterval


    【解决方案1】:

    首先,一定要初始化 lastTime :

    var lastTime = new Date(), shiftTime = new Date();
    

    然后改变

    lastTime  = lastTime - 300000;
    

    lastTime  = new Date(lastTime - 300000);
    

    这样您就可以在删除 300000 毫秒后得到一个 Date 对象。

    【讨论】:

    • 谢谢你们 - 每个答案都非常有帮助。
    【解决方案2】:

    任何需要在区间之间永久存在的变量都应该在区间函数之外声明,这样它们就不会被作用域杀死。例如

    var valueToKeep;
    setInterval(function(){
          var tempValue;
          // do something
          valueTokeep - tempValue;
    }, 1000);
    

    @dystroy 是正确的;如果你想使用日期方法,最好构建一个日期对象:

    var foo = 123456;
    var bar = new Date(ms), // gives you date object
        baz = foo - 86400; // just gives you a number
    

    【讨论】:

      猜你喜欢
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 2015-10-31
      相关资源
      最近更新 更多