2013-06-12 54 views
2

我想在網頁內的setInterval內做些事情(目前只是通過寫入console.log進行測試)。當間隔週期時,我想通過之前的值的區間。目前我正在努力做到以下幾點:jQuery - 從setInterval中獲取事先值

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函數中得到最後一個間隔值(我最終需要使用日期&)?

有沒有更好的方法來做到這一點,而不是我如何接近它?

謝謝!

回答

4

首先,一定要初始化lastTime:

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

然後改變

lastTime = lastTime - 300000; 

lastTime = new Date(lastTime - 300000); 

,使您不必刪除300000毫秒後得到Date對象。

+0

謝謝你們兩個 - 每個答案是非常有幫助的。 –

4

您需要在時間間隔之間延續的任何變量都應該在間隔函數之外聲明,以便它們不會被範圍中止。例如

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