私が知っていること
setInterval
少なくとも IE9 では、パラメータを自身に含めずにメソッドに渡すことはできません。
myInterval = setInterval('startTimer(10)',500);
動作しません
一方
setInterval( function() { startTimer(10); }, 500 );
動作します。
私が試したこと
timer( $('#display-upgrade-ticker-'+response.userClubHouseDisplayId + " .display-upgrade-timer"),currentDate);
function timer(Obj, target_date) {
// variables for time units
var days, hours, minutes, seconds;
displayInterval = setInterval(function () {
// update the tag with id "countdown" every 1 second
var current_date = new Date().getTime();
var seconds_left = (target_date.getTime() - current_date) / 1000;
console.log(seconds_left);
// do some time calculations
days = Math.round(parseInt(seconds_left / 86400));
seconds_left = Math.round(seconds_left % 86400);
hours =Math.round(parseInt(seconds_left / 3600));
seconds_left = Math.round(seconds_left % 3600);
minutes = Math.round(parseInt(seconds_left / 60));
seconds = Math.round(parseInt(seconds_left % 60));
// format countdown string + set tag value
if(hours<10) hours='0'+hours;
if(minutes<10) minutes='0'+minutes;
if(seconds<10) seconds='0'+seconds;
$(Obj).html(hours+":"+minutes + ":" + seconds);
if ( days == 0 && hours == 0 && minutes == 0 && seconds == 0 ) {
clearInterval(displayInterval);
}
},1000);
}
私が欲しいもの
if ( days == 0 && hours == 0 && minutes == 0 && seconds == 0 )
条件が満たされた後にトリガーするには、clearIntervalが必要です。setIntervalが自己完結型の場合、どうすればよいですか。