2012-02-10 4 views
-1

У меня есть javascript ниже: Но я хочу сделать так, чтобы он начинался в 7:30 утра Каждое утро! Я не знаю, возможно ли это, но если вы знаете, как делиться! Спасибо, если сможете!Как запустить этот javascript в определенное время?

<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> 

ответ

2

Единственный способ сделать Javascript начать на что-то вроде 7.30 AM каждое утро, если пользователь уже имеет страницу вверх.

Если это так, и для этого примера я собираюсь предположить, что это тот случай, когда пользователь загружает страницу, сначала вы должны проверить javascript текущее время и рассчитать, сколько секунд между ними и 7:30 УТРА.

Оттуда вы бы начать SetTimeout, который будет выполняться после расчетного количества секунд - SetTimeout работает на миллисекунды, поэтому SetTimeout аргумент был бы: количество секунд * 1000.

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.

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 должны быть отрегулированы так, чтобы они соответствовали вашим требованиям точности и точности.

+0

Это серьезно сложнее. – Trevor

Смежные вопросы