2011-01-31 12 views
4

時間が例えば午後3時に達すると、JavaScript関数をトリガーしたいと思います。時間が特定の時間に達したときに関数をトリガーする方法

時間は動的に割り当てられます。だから、それを達成するための任意のJavaScript関数ですか?

+0

それは正確に午後3時ですか、または午後3時が過ぎたら特定の間隔で点検してください。 –

+0

毎日正確に午後3時にこの機能を作動させたいと思うのですが、アラームのようなものです。 (ただし、時間は後で動的に割り当てられます) – ptamzz

答えて

7

現在の時刻と目標時刻の差を計算し、その値でsetTimeout()を使用するだけです。

function alert3pm() { 
    alert("It's 3PM!"); 
} 
var timeAt3pm = new Date("1/31/2011 03:00:00 PM").getTime() 
    , timeNow = new Date().getTime() 
    , offsetMillis = timeAt3pm - timeNow; 
setTimeout(alert3pm, offsetMillis); 

というか、あなたのような何かができる(つまり、ブラウザ間本当に矛盾だから)日付を解析するのinstaed:

たとえば、ターゲットブラウザは日付を解析する方法に応じて、次の行うことができますこの:あなたがtriggeしたい

function getTimeAtHour(hour) { 
    var t = new Date(); 
    t.setHours(hour); 
    t.setMinutes(0); 
    t.setSeconds(0); 
    t.setMilliseconds(0); 
    return t; 
} 
+0

この計算には差異の計算は必要ありません。 –

+1

確かに、setTimeoutには待機時間(ms)がかかり、その時間は現在と「アラーム」時間の差になるはずです。 – maerics

+1

関数を宣言するための珍しい構文 - おそらくより標準的な 'function alert3pm(){}'を使った方が明確でしょうか? – Basic

関連する問題