2011-08-13 10 views
1

今日私が学んだように、電話機をスリープモードにして、JavaScriptのタイマー機能を実行すると、電話機が一時停止します。iPhoneスリープモードでタイマーを実行しています(JavaScriptなし)?

特定のアプリケーション用のタイマーが必要です。時間を記録して表示する必要があり、要素のinnerHTMLを更新する必要があります。このタイマーを動作させるにはどうすればいいと思いますか?

壮大なヘルプありがとう!電話が目覚めると、アプリがフォアグラウンドに戻ったとき、あなたがカウントを開始したときに、ちょうど今して間の差分を知っている必要がありますので、

答えて

6
var startTime; 
var timer; 

function displayTime() { 
    var now = new Date(); 
    var timeDiff = new Date(now - startTime); // constructor uses UTC, so use UTC date functions from here on 
    var hours = timeDiff.getUTCHours(); 
    var mins = (timeDiff.getUTCMinutes() < 10) ? '0' + timeDiff.getUTCMinutes() : timeDiff.getUTCMinutes(); 
    var secs = (timeDiff.getUTCSeconds() < 10) ? '0' + timeDiff.getUTCSeconds() : timeDiff.getUTCSeconds(); 
    document.getElementById('time').innerHTML = hours + ':' + mins + ':' + secs; 
    if (hours >= 2) clearInterval(timer); 
} 

window.onload = function() { 
    startTime = new Date(); 
    timer = setInterval(displayTime, 1000); 
} 

は、startTimeはまだ、元の時間でなければなりません。眠っている間はディスプレイを更新する必要はありません。元の開始時刻からの時間を知る必要があります。

+0

だから、私は前にこのように構成されていたが、あなたの方法を使用してにロジックを渡す方法を確認するために失敗しています: 機能タイマ(){ \t するvar digiformat =「」; \t if(i> 3599) \t {\t var H = Math.floor(i/3600); \t \t var H = Math.floor(i/3600);他 \t} \t \t { \t \t VARのH = 0。 \t} \t \tするvar M = I - (H * 3600) \t \t \t {\t \t M = Math.floor(M/60) \t} 他\t(M> 59)場合\t { \t \t M = 0 \t} \t \tするvar S = I - (M * 60)\t \t if(H <10) \t { \t \t H = "0" + H; \t} \t IF(M <10) \t {\t \t M = "0" + M。 \t} \t(S <10) \t {\t \t S = "0" + Sであれば、\t} \t document.getElementById( 'time')。innerHTML = H + ":" + M + ":" + S; exe = setTimeout( 'timer()'、1000); i ++; \t if(H> = 2){ \t \t clearTimeout(exe); \t} \t } –

+0

SO SORRY!私はあなたが読めるように自分の答えをうまく整える方法を知らない。 –

+0

@Ben - 問題ない、これが助けてくれることを願う。私は表示のために 'timeDiff'を解析するための例を更新しました。 – nekno

関連する問題