2010-12-15 11 views
31

たとえば、js関数を10.00.00.00に呼び出したい どうすればよいですか?特定の時刻のjavacript関数を呼び出す

<script type="text/javascript"> 

var now = new Date(); 

var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 30, 0, 0) - now; 

setTimeout(function{openAPage(), setInterval(openAPage, 60*1000)}, millisTill10) 

function openAPage() { 

var startTime = new Date().getTime(); 
var myWin = window.open("http://google.com","_blank") 
var endTime = new Date().getTime(); 
var timeTaken = endTime-startTime; 


document.write("<br>button [email protected]</br>") 
document.write(new Date(startTime)); 
document.write("<br>page [email protected]</br>") 
document.write(new Date(endTime)); 
document.write("<br>time taken</br>") 
document.write(timeTaken); 

myWin.close() 

} 

</script> 

私はこのコードから00.30を期待しています。それはgoogleを開き、1分後に再びそれを行いますか?そのコードで何が間違っていますか?

答えて

64

タイマーを設定するにはsetTimeout、タイマーを設定するにはタイマーの時間を計算するにはDateが必要です。コードを仮定

var now = new Date(); 
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now; 
if (millisTill10 < 0) { 
    millisTill10 += 86400000; // it's after 10am, try 10am tomorrow. 
} 
setTimeout(function(){alert("It's 10am!")}, millisTill10); 
+0

を使用することができますか? –

+2

['setInterval'](https://developer.mozilla.org/en/DOM/window.setInterval)を使うことができます。 'interval = setInterval(func、5 * 60 * 1000);'それでは、あなたは続行したくないときに 'clearInterval(interval)'を実行することができます。 –

+0

インターバルは午前10時から有効ですか、ページを開いたときに有効ですか? –

0

あなたは時間指定イベントを設定するためにsetTimeout()を使用することができ、午前10時前にロードされると、まだ10:00に閲覧されるウェブページ上に配置されています。この関数は実行するJS文と実行前のミリ秒数をとります。この2番目の部分は、組み込みの日付関数で簡単に見つけることができます。

+0

コードサンプルを送ることができますか? –

9

特定の時刻にスクリプトを実行するための私のソリューションで、負のタイムアウトをチェックするエラーはありません。

//year, month 0-11, date, hour, min (can add ,sec,msec) 
var eta_ms = new Date(2015, 0, 21, 17, 0).getTime() - Date.now(); 
var timeout = setTimeout(function(){}, eta_ms); 
2

さて、あなたは感謝..私はそれを行うことができますどのように午前10時から5分ごとに、後でその関数を呼び出したいもう一つの作業ノードパッケージontime