秒数で初期化してから、カウントダウンする新しい「秒数」で新しい呼び出しを行うことにより、いつでもリセットできるタイマーウィジェットを作成しようとしています。これまでのところ、タイマーをうまく作成してカウントダウンするこれがあります。
私がやろうとしているのは、最初に _create メソッド内で _destroy メソッドを呼び出して、既に要素にあるタイマーを削除し、window.clearInterval を使用してタイマーの再追加を停止することです。this.interval は _start メソッドで設定され、_destroy メソッドで参照されますが、問題は this.interval のスコープにあると思います。
これは私がこれまでに持っているものですが、_destroy メソッドが間隔をクリアしていないようで、その理由がわかりません。
$.widget('time.countdown', {
options : {
remaining : (2 * 24 * 60 * 60 * 1000),
updatefreq: 1000
},
_create : function () {
'use strict';
this._destroy();
},
_start: function () {
'use strict';
var secs = this.options.remaining;
this.interval = window.setInterval((function (elem, secs) {
return function () {
secs -= 1;
var days = Math.floor(secs / (24 * 60 * 60)),
div_hr = secs % (24 * 60 * 60),
hours = Math.floor(div_hr / (60 * 60)),
div_min = secs % (60 * 60),
minutes = Math.floor(div_min / 60),
div_secs = div_min % 60,
seconds = Math.ceil(div_secs),
time_parts = {
"d": days,
"h": hours,
"m": minutes,
"s": seconds
},
tstring = '',
c;
for (c in time_parts) {
if (time_parts.hasOwnProperty(c)) {
tstring += time_parts[c] + c + ' ';
}
}
elem.html(tstring);
};
}(this.element, secs)), this.options.updatefreq);
},
_destroy: function() {
'use strict';
if (this.interval !== undefined) {
window.clearInterval(this.interval);
}
this.element.html('');
}
});
誰でもこれに光を当てることができますか?