以下に、正常に動作するjavascriptカウントダウンタイマーがあります。
<h1><span id='countdown'><?php echo $dbSessionDuration; ?></span></h1>
...
$(document).ready(function() {
var time = <?php echo json_encode($dbSessionDuration); ?>,
parts = time.split(':'),
hours = +parts[0],
minutes = +parts[1],
seconds = +parts[2],
span = $('#countdown');
function correctNum(num) {
return (num<10)? ("0"+num):num;
}
var timer = setInterval(function(){
seconds--;
if(seconds == -1) {
seconds = 59;
minutes--;
if(minutes == -1) {
minutes = 59;
hours--;
if(hours==-1) {
alert("timer finished");
clearInterval(timer);
return;
}
}
}
span.text(correctNum(hours) + ":" + correctNum(minutes) + ":" + correctNum(seconds));
}, 1000);
});
今、私が考えたのは、上記の例を使用してそれを操作し、反対のことを実行して、00:00:00(時間、分、秒)から始まるカウントアップタイマーを作成することです。
しかし、問題はそれが機能していないということです。何も起きていません。以下の関数で時間が必要かどうかはわかりません。カウントアップとして、時間は必要なだけ長くなる可能性があるためです。しかし、私の質問は、カウントアップタイマーを完全に機能するように修正するにはどうすればよいですか?
<p><input type='text' class='responseTime' name='responsetime' value='00:00:00' /></p>
...
$(document).ready(function() {
var response = "00:00:00",
parts = time.split(':'),
hours = +parts[0],
minutes = +parts[1],
seconds = +parts[2],
input = $('.responseTime');
function correctResponse(responsenum) {
return (responsenum<10)? ("0"+responsenum):responsenum;
}
var responsetimer = setInterval(function(){
seconds--;
if(seconds == +59) {
seconds = 00;
minutes--;
if(minutes == +59) {
minutes = 00;
hours--;
return;
}
}
input.text(correctResponse(hours) + ":" + correctResponse(minutes) + ":" + correctResponse(seconds));
}, 1000);
});
アップデート:
また、補足として、私が信じているカウントダウンタイマーは、毎秒2秒ごとにカウントダウンしていることに気づきました。これをカウントダウンタイマー用に並べ替えて、カウントアップタイマーに含めるにはどうすればよいですか?
以下のコードは、インクリメント++を含み、.textではなく.valを含むように変更しましたが、何が起こっているのかというと、00:00:00から始まり、00:59:60まで下がり、その後停止します。 :
var response = "00:00:00",
parts = time.split(':'),
hours = +parts[0],
minutes = +parts[1],
seconds = +parts[2],
input = $('.responseTime');
function correctResponse(responsenum) {
return (responsenum<10)? ("0"+responsenum):responsenum;
}
var responsetimer = setInterval(function(){
seconds++;
if(seconds == +59) {
seconds = 00;
minutes++;
if(minutes == +59) {
minutes = 00;
hours++;
return;
}
}
input.val(correctResponse(hours) + ":" + correctResponse(minutes) + ":" + correctResponse(seconds));
}, 1000);
});