Javascript 计时器不准确

Javascript 计时器不准确,javascript,Javascript,我正在构建一个活动计时器,但是我的代码工作不正常。计时器比实时快约40%。怎么了 var-sec=00; var min=00; var-hr=00; 变量t; var定时器_为_on=0; 函数timedCount(){ 如果(最小==0){ 最小值=1; } document.getElementById('seconds')。value=sec; document.getElementById('minutes')。value=min; $('.node form.form项:第n个子项

我正在构建一个活动计时器,但是我的代码工作不正常。计时器比实时快约40%。怎么了

var-sec=00;
var min=00;
var-hr=00;
变量t;
var定时器_为_on=0;
函数timedCount(){
如果(最小==0){
最小值=1;
}
document.getElementById('seconds')。value=sec;
document.getElementById('minutes')。value=min;
$('.node form.form项:第n个子项(4)input').val(min);
document.getElementById('hours')。value=hr;
$('.node form.form项:第n个子项(3)input').val(hr);
秒=秒+1;
如果(秒=60){
秒=0;
min=min+1;
如果(最小==60){
最小值=1;
hr=hr+1;
}
}
t=setTimeout(“timedCount()”,1000);
}
函数doTimer(){
如果(!计时器打开){
定时器_为_开=1;
timedCount();
}
}
函数stopCount(){
清除超时(t);
定时器_为_开=0;
}
函数resetCount(){
停止计数();
秒=0;
最小值=0;
hr=0;
document.getElementById('hours')。值=00;
$('.node form.form项:第n个子项(3)input').val('0');
document.getElementById('minutes')。值=00;
$('.node form.form项:第n个子项(4)input').val('0');
document.getElementById('seconds')。值=00;
}
函数putinimelog(){
//工作时间
var hourItems=[];
var hourFields=document.getElementById(“节点形式”).getElementsByTagName(“输入”);
对于(变量i=0;i

活动计时器h:
m:
s:
是我的回购协议,与window.setInterval()结合使用可能会有所帮助。包括工作示例

添加到HTML中,然后每次需要时间快照时调用
clock.now-->146224851241
。你可以从那里直观地加减

实际的js看起来像:

var clock = (function() {

    // object to expose as public properties and methods such as clock.now
    var pub = {};

    //clock.now
    Object.defineProperty(pub, "now", {
        get: function () { 
            return Date.now();
        }
    });

    //API
    return pub;
}());
var doc=单据;
var el=doc.getElementById('output');
setInterval(函数(){
///在这里调用你的函数
el.innerHTML=clock.what.time(clock.now);
}, 500);


setTimeout
不保证在精确的毫秒数之后执行。这更像是一场战争suggestion@zzzzBov所以我应该用什么来代替
setTimeot
setTimeout
并不总是准确的,为了得到时间,你可以使用
Date()
对象,然后计算初始值和最新值之间的差值。如果你想象未来这个链接不起作用,这个答案就毫无价值了。是的,让我们想象一下,回购协议被删除或移动,使旧链接不再工作……此外,鉴于它似乎是您的回购协议,请包括对此的确认,以便您的回答不会像垃圾邮件一样。这不会回答OP:“计时器比实时快约40%。出了什么问题?”问题是你实际上没有回答这个问题(这是我们从答案中所期望的)。你刚刚共享了一个指向某个回购协议的链接。这可能是松散相关的,但不能回答OPs问题中的问题。