我只是想知道是否有可能有一个javascript for循环,每天只迭代一次循环,即日期改变时?
for(i=0; i < myArray.length; i++){
alert(myArray[i]);
}
所以在上面的循环中,让它运行,并冻结它或只是一些东西,直到数据发生变化,再做一次迭代,然后继续这样做......你知道我的意思。
提前致谢!
答案 0 :(得分:10)
当您没有服务器时,使用localStorage是最佳方式, 因为javascript代码可能会重新启动(通过关闭选项卡并重新打开),因此会丢失之前的状态。
// checks if one day has passed.
function hasOneDayPassed()
// get today's date. eg: "7/37/2007"
var date = new Date().toLocaleDateString();
// if there's a date in localstorage and it's equal to the above:
// inferring a day has yet to pass since both dates are equal.
if( localStorage.yourapp_date == date )
return false;
// this portion of logic occurs when a day has passed
localStorage.yourapp_date = date;
return true;
}
// some function which should run once a day
function runOncePerDay(){
if( !hasOneDayPassed() ) return false;
// your code below
alert('Good morning!');
}
runOncePerDay(); // run the code
runOncePerDay(); // does not run the code
答案 1 :(得分:4)
如果您希望以预定义的间隔发生某些事情,可以设置超时/间隔: http://www.w3schools.com/js/js_timing.asp
例如:
var dayInMilliseconds = 1000 * 60 * 60 * 24;
setInterval(function() { alert("foo"); },dayInMilliseconds );
编辑:既然你提到代码将在浏览器中运行,这假定浏览器运行至少24小时,否则将无法运行。
答案 2 :(得分:0)
实现它的最佳方法是创建一个持续1天的cookie。 即使刷新网页或浏览器关闭后,倒计时仍将继续...
setcookie($cookie_name, $cookie_value, time() + 86400, "/");
这意味着86400 = 1天
希望有所帮助