Javascript 这是实现计时器的坏方法吗?

Javascript 这是实现计时器的坏方法吗?,javascript,Javascript,我是JS新手,我想练习的一件事是在浏览器中实现一个计时器。在查看倒计时/计时器时,我总是看到有人使用getDate()和getTime()方法,但这些方法让我有点困惑,所以我以这种方式实现了它。我只是好奇这个代码是否不好 s = 0; function countDown(){ t = 60*25; s++; t -= s; var pomMins = Math.floor(t / 60); var pomSecs = t % 60; if (t

我是JS新手,我想练习的一件事是在浏览器中实现一个计时器。在查看倒计时/计时器时,我总是看到有人使用getDate()和getTime()方法,但这些方法让我有点困惑,所以我以这种方式实现了它。我只是好奇这个代码是否不好

s = 0;

function countDown(){
   t = 60*25;
   s++;
   t -= s;
   var pomMins = Math.floor(t / 60);
   var pomSecs = t % 60;    

   if (t > 0){
      document.getElementById("demo").innerHTML = "" + pomMins + ":" + pomSecs;
   }else{
      document.getElementById("demo").innerHTML = "COMPLETE";
   }
}

function setTimer(){
   s = 0;
   t = 60*25;
   countDown();
   var timer = setInterval(countDown, 1000);
}

HTML是一个基本的p标记,ID为“demo”

这是错误的,因为您的
setInterval
不是每1000ms出现一次,而是例如1003ms,因为系统很忙,不能准确地每1000ms执行一次。这就是为什么
getTime
更准确的原因

这是错误的,因为您的
setInterval
不是每1000ms出现一次,而是例如1003ms,因为系统很忙,不能准确地每1000ms执行一次。这就是为什么
getTime
更准确的原因

另外,不要使用innerHTML,因为它会重新呈现整个DOM。对于简单的用例,创建并附加元素和子节点。看起来很整洁,谢谢。另外,不要使用innerHTML,因为它会重新呈现整个DOM。对于简单的用例,创建并附加元素和子节点。看起来很整洁,谢谢。请注意,这样setInterval就会自动更正它的漂移。所以在这个浏览器中,它不会像你想象的那么糟糕。请注意,这样setInterval就会自动更正它的漂移。所以在这个浏览器中,它不会像你想象的那么糟糕。