Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使这个javascript在特定时间启动?_Javascript - Fatal编程技术网

如何使这个javascript在特定时间启动?

如何使这个javascript在特定时间启动?,javascript,Javascript,我在下面有一个javascript: 但我想做的是让它在每天早上7:30开始!我不知道这是否可能,但如果你知道如何分享!如果可以的话,谢谢你 <script> var timer; var stop; function startCount() { stop = false; timer = setInterval(count,1); } function stopCount() { stop = true; } funct

我在下面有一个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>

无功定时器;
var停止;
函数startCount()
{
停止=错误;
定时器=设置间隔(计数,1);
}
函数stopCount()
{
停止=真;
}
函数计数()
{
如果(停止==false)
{
var el=document.getElementById('counter');
var currentNumber=parseFloat(el.innerHTML);
el.innerHTML=currentNumber+0.00000003831417624521;
}
}
0
  • 米利斯伯爵向左走到7:30
  • 调用setTimeout(您想要调用的函数,timeLeft)

  • 让Javascript在每天早上7:30左右启动的唯一方法是用户已经启动了页面

    如果是这样的话,在本例中,我将假设是这样的,当用户加载页面时,您将首先让javascript检查当前时间,并计算从现在到早上7:30之间的秒数

    从这里开始,您将启动一个setTimeout,它将在计算的秒数之后运行-setTimeout以毫秒为单位工作,因此setTimeout参数将是:number of seconds*1000

    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后的任何时间运行此代码。

    您只需执行时间检查,如果不匹配,则计算差异并设置回调。因为计时测量不是很准确,所以您可能希望返回到更早的某个时间进行另一次测量

    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);
        }
    }
    
    函数每天运行(func、timeToRun、lastRun){
    var now=new Date().getTime();
    var timeOfDay=现在为%86400;
    if(timeOfDay-timeToRun<5000&&now-lastRun>83200){
    setTimeout((函数(func、timeToRun、lastRun){
    返回函数(){
    每天运行(func、timeToRun、lastRun);
    };
    })(乐趣,timeToRun,现在),83200);
    func();
    }否则{
    setTimeout((函数(func、timeToRun、lastRun){
    返回函数(){
    每天运行(func、timeToRun、lastRun);
    };
    })(乐趣,时间运行,最后一次运行),(时间运行-现在)*0.95+1000);
    }
    }
    

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

    这太复杂了。