如何让这个javascript在某个时间开始?

时间:2012-02-10 00:53:20

标签: javascript

我在下面有一个javascript: 但我想做的是让它每天早上7:30开始!我不知道它是否可能,但如果你知道如何分享!谢谢,如果可以的话!

 <script>

 var timer;
 var stop;

 function startCount()
 {
      stop = false;
      timer = setInterval(count,1);
 }
 function stopCount()
 {
      stop = true;
 }
 function count()
 {
      if(stop == false)
          {
           var el = document.getElementById('counter');
           var currentNumber = parseFloat(el.innerHTML);
           el.innerHTML = currentNumber+0.00000003831417624521;
      }
 }
 </script>
 </head>
 <body>

 <div id="counter">0</div>

 <input type="button" value="reset" id="reset" onclick="document.getElementById('counter').innerHTML = 0;" />
 <input type="button" value="start" id="start" onclick="startCount();" />
 <input type="button" value="stop" id="stop" onclick="stopCount();" />
 </body>
 </html>

4 个答案:

答案 0 :(得分:2)

每天早上7:30开始Javascript启动的唯一方法就是用户已经有了页面。

如果是这种情况,并且对于这个例子,我将假设情况就是这样,当用户加载页面时,你最初会用javascript检查当前时间并计算现在和7之间的秒数。 :30AM

从那里开始,你将启动一个setTimeout,它将在计算的秒数之后运行 - setTimeout以毫秒为单位运行,因此setTimeout参数将是:秒数* 1000。

答案 1 :(得分:0)

  1. 计数milis离开到7:30
  2. 调用setTimeout(function_you_want_to_call,timeLeft)
  3. https://developer.mozilla.org/en/DOM/window.setTimeout

答案 2 :(得分:0)

setTimeout(function checkTime() {
    var now = new Date;
     if ( now.getHours() >= 7 && now.getMinutes() >= 30 ) {
        // run special code here
     } else {
        setTimeout(checkTime, 10);
     } 
}, 10);

这假设您希望在上午7:30之后的任何时间运行此代码。

答案 3 :(得分:0)

您可以简单地执行时间检查,如果不匹配,则计算差异并设置回调。由于时序测量不是很准确,您可能需要提前回电再进行另一次测量。

function runEveryDay(func, timeToRun, lastRun) {
    var now = new Date().getTime();
    var timeOfDay = now % 86400;
    if (timeOfDay - timeToRun < 5000 && now - lastRun > 83200) {
        setTimeout((function (func, timeToRun, lastRun) {
            return function () {
                runEveryDay(func, timeToRun, lastRun);
            };
        })(fun, timeToRun, now), 83200);
        func();
    } else {
        setTimeout((function (func, timeToRun, lastRun) {
            return function () {
                runEveryDay(func, timeToRun, lastRun);
            };
        })(fun, timeToRun, lastRun), (timeToRun - now) * 0.95 + 1000);
    }
}

应调整值5000,83200,0.95和1000以满足您的精度和准确度需求。