1

フィールドの値を1分ごとに変更するカウントダウンタイマーをJSで作成しようとしています(最初は20で、次に19、18、17などに変更します)が、正しく機能していません。60秒ごとに値が変化するわけではありませんが、ランダムに機能するように感じます(15秒後に最初に値が変化する場合もあれば、53秒後に値が変化する場合もあります)。私が間違っていることは何か分かりますか?コードは次のとおりです。

function getTimeNow(){
    var Time = new Date;
    return Time.getHours()*60*60+Time.getMinutes()*60 + Time.getSeconds();
}

    var start = getTimeNow();
    var start_point = start%60;
    var target = start+60*20;


function TimeOut(){
    if((getTimeNow()-start)%60 == start_point && target>getTimeNow()){
       var temp = jQuery('.Timer').html();
       temp-=1;
       jQuery('.Timer').html(temp);
    }
    setTimeout(TimeOut,1000);
}
4

1 に答える 1

3

タイマー関数が呼び出される正確な瞬間を当てにすることはできません。ロジックをタイムシフトに対してより回復力のあるものに変更する必要があります...

setInterval(function(){count.innerText = count.innerText - 1;},
            60*1000);

これもずっと短いです...

于 2012-05-28T06:40:38.620 に答える