2013-06-12 5 views
2

Я хочу что-то сделать (в настоящее время просто проверяя путем записи на console.log) в пределах setInterval внутри веб-страницы. Когда интервальные циклы, я хотел бы передать в значение значение предыдущего интервала. В настоящее время я пытаюсь сделать следующее: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); 

так что вы получите Date объект после того, как удалили 300000 мс.

+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 
Смежные вопросы