我正在尝试制作一个时钟,该时钟以我提供的时间值 (hh:mm:ss) 开始,并以 4 倍速度运行(对于运行 4 倍实际时间的在线游戏的服务器时间)。我已经修改了一个我在网上找到的免费时钟来执行此操作,但它只适用于每隔一分钟(如果这没有意义,请尝试下面的代码以确切了解我的意思)。
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 很陌生,这绝对是一个小技巧。谢谢