2016-12-30 10 views
0

私は25分で始まり、カウントダウンするJSで簡単なタイマーを作ろうとしています。分/秒のカウントダウンタイマーが低下していませんか?

$(document).ready(function() { 
 
\t  updateClock(); 
 
\t  var timeInterval = setInterval(updateClock(), 1000); 
 
    }); 
 

 
    var ms = 1500000; 
 
    var minutes = Math.floor(ms/1000/60); 
 
    var seconds = Math.floor((ms/1000) % 60); 
 

 
    function updateClock() { 
 
\t  ms -= 1000; 
 
\t  if (ms <= 0) { 
 
\t \t  clearInterval(timeInterval); 
 
\t  }; 
 
\t  $('#minutes').html(minutes); 
 
\t  $('#seconds').html(seconds); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="minutes"></div> 
 
\t <div id="seconds"></div>

ページのみダウンティック決して25と0表示しない、なぜ私が把握することはできません。 setInterval()を間違って使用していますか?

+0

試してみてください: 'setInterval(updateClock、1000)' – Dale

+0

試してもまだ動作しませんでした。とにかく提案してくれてありがとう。 – gridproquo

+2

あなたは 'updateClock()'内の分と秒の値を更新していません – ochi

答えて

8

あなたのupdateClock()機能の中で、minutessecondsの値を計算する必要があります。現時点では、初期値から更新されることはありません。

間隔を設定する際にも、関数名に括弧を追加しないでください、それ以外の場合は、単に戻り値への参照ではなく、機能自体を渡します。

var timeInterval; 
 
    
 
$(document).ready(function() { 
 
    updateClock(); 
 
    timeInterval = setInterval(updateClock, 1000); 
 
}); 
 

 
var ms = 1500000; 
 

 
function updateClock() 
 
{ 
 
    ms -= 1000; 
 
    
 
    var minutes = Math.floor(ms/1000/60), 
 
     seconds = Math.floor((ms/1000) % 60); 
 
    
 
    if (ms <= 0) 
 
    { 
 
     clearInterval(timeInterval); 
 
    }; 
 
    
 
    $('#minutes').html(minutes); 
 
    $('#seconds').html(seconds); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="minutes"></div> 
 
<div id="seconds"></div>

+0

助けてくれてありがとう!しかし、関数名にかっこを追加しない部分についてもう少し説明できますか? 「単に戻り値への参照を渡す」とはどういう意味ですか? – gridproquo

+0

問題ありません: 'setInterval()'の関数名の中に括弧を追加すると、Javascriptは 'x'ミリ秒ごとに関数を呼び出すのではなく、その関数の**戻り値**を' setInterval'に渡します。 – BenM

3

分と秒をもう一度更新するのを忘れました。

function updateClock() { 
    ms -= 1000; 
    if (ms <= 0) { 
     clearInterval(timeInterval); 
    }; 
    minutes = Math.floor(ms/1000/60); 
    seconds = Math.floor((ms/1000) % 60); 
    $('#minutes').html(minutes); 
    $('#seconds').html(seconds); 
} 
関連する問題