Run code once a day

后端 未结 3 1511
南旧
南旧 2020-12-06 14:45

I was just wondering if it is possible to have a javascript for loop that only iterates through the loop once a day i.e. when the date changes?

for(i=0; i &l         


        
相关标签:
3条回答
  • 2020-12-06 15:16

    If you want something to happen at predefined intervals, you can set a timeout/interval: http://www.w3schools.com/js/js_timing.asp

    For example:

    var dayInMilliseconds = 1000 * 60 * 60 * 24;
    setInterval(function() { alert("foo"); },dayInMilliseconds );
    

    edit: since you mentioned that the code will be running in a browser, this assumes the browser is running for at least 24 hrs and will not work otherwise.

    0 讨论(0)
  • 2020-12-06 15:28

    the best way to achieve it is by creating a cookie that lasts for1 day.. Even if after the refresh of the web page or browser gets closed that countdown will still continue..

    setcookie($cookie_name, $cookie_value, time() + 86400, "/"); 
    

    This means 86400 = 1 day

    Hope it helps

    0 讨论(0)
  • 2020-12-06 15:29

    Using localStorage is the best way to go when you don't have a server, since the javascript code might restarted (by closing the tab and re-opening), therefore loosing the previous state.

    Method below is more bulletproof:

    // 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
    
    0 讨论(0)
提交回复
热议问题