指定した時間値 (hh:mm:ss) で開始し、4 倍の速度で実行される時計を作成しようとしています (4 倍の実時間で実行されるオンライン ゲームのサーバー時間)。これを行うためにオンラインで見つけた無料の時計を変更しましたが、1分おきにしか機能しません(意味がない場合は、以下のコードを試して正確に確認してください)。
var customClock = (function () {
var timeDiff;
var timeout;
function addZ(n) {
return (n < 10 ? '0' : '') + n;
}
function formatTime(d) {
t1 = d.getHours();
t2 = d.getMinutes();
t3 = d.getSeconds() * 4;
if (t3 > 59) {
t3 = t3 - 60;
t2 = t2 + 1;
}
if (t2 > 59) {
t2 = t2 - 60;
t1 = t1 + 1;
}
if (t1 > 23) {
t1 = 0;
}
return addZ(t1) + ':' + addZ(t2) + ':' + addZ(t3);
}
return function (s) {
var now = new Date();
var then;
var lag = 1015 - now.getMilliseconds();
if (s) {
s = s.split(':');
then = new Date(now);
then.setHours(+s[0], +s[1], +s[2], 0);
timeDiff = now - then;
}
now = new Date(now - timeDiff);
document.getElementById('clock').innerHTML = formatTime(now);
timeout = setTimeout(customClock, lag);
}
}());
window.onload = function () {
customClock('00:00:00');
};
なぜこれが起こっているのですか?私はJavascriptにかなり慣れていないので、これは間違いなく少しハックです。ありがとう