Javascript 当手机屏幕被锁定时,倒数计时器停止计时

Javascript 当手机屏幕被锁定时,倒数计时器停止计时,javascript,html,timer,Javascript,Html,Timer,我写了一个代码——一个测量输入秒数的计时器。当我锁定手机屏幕时,计时器会倒计时秒数,但在长时间解锁屏幕后,计时器在锁定屏幕几秒钟后停止。有办法解决这个问题吗 document.getElementById('btn').addEventListener('click',function(){ var workSeconds = parseInt(document.getElementById('work-seconds').value); var workSecondsCount = w

我写了一个代码——一个测量输入秒数的计时器。当我锁定手机屏幕时,计时器会倒计时秒数,但在长时间解锁屏幕后,计时器在锁定屏幕几秒钟后停止。有办法解决这个问题吗

document.getElementById('btn').addEventListener('click',function(){
  var workSeconds = parseInt(document.getElementById('work-seconds').value);
  var workSecondsCount = workSeconds;
  var worktimer = setInterval(workSecCount,1000);
  function workSecCount(){
    workSecondsCount--;
    workSecondsCount < 10 ? document.getElementById('workSecs').textContent = "0" + workSecondsCount : document.getElementById('workSecs').textContent = workSecondsCount;
    if(workSecondsCount == 0){
      document.getElementById('workSecs').textContent = "DONE";
      workSecondsCount = workSeconds;
      clearInterval(worktimer);
    }
  };
});
document.getElementById('btn').addEventListener('click',function(){
var workSeconds=parseInt(document.getElementById('work-seconds').value);
var workSecondsCount=工作秒;
var worktimer=setInterval(workSecCount,1000);
函数workSecCount(){
工作秒计数--;
worksecondscont<10?document.getElementById('workSecs')。textContent=“0”+worksecondscont:document.getElementById('workSecs')。textContent=worksecondscont;
如果(工作秒数==0){
document.getElementById('workSecs').textContent=“完成”;
workSecondsCount=工作秒;
clearInterval(工作计时器);
}
};
});

开始
工作计时器:


您需要依赖当前时间,而不是
工作秒数,然后您可以补偿时间间隔

var-worktimer=0;
document.getElementById('btn')。addEventListener('click',function(){
如果(!worktimer)清除间隔(worktimer);
var workSeconds=parseInt(document.getElementById('work-seconds').value);
var workSecondsCount=new Date().getTime()+workSeconds*1000;
函数workSecCount(){
const secondscont=Math.ceil((workSecondsCount-new Date().getTime())/1000);
secondScont<10?document.getElementById('workSecs')。textContent=“0”+secondScont:document.getElementById('workSecs')。textContent=secondScont;

如果(二)哇!非常感谢!但是为什么倒计时开始,例如,当我进入20秒时,它从18秒开始?这是因为设置间隔,它在1000毫秒后执行函数,你需要在声明后立即调用函数。我会更新答案。我也将
floor
更改为
Math.ceil
,现在我t应该更好。有时,尽管很少,如果我点击开始按钮开始倒计时,秒数会从1开始倒数到2秒。你知道这能做什么吗?你帮了我很多忙!谢谢!当然,我今晚会看一看。
<input type="number" id="work-seconds" placeholder="seconds" min="0">
<button id="btn">START</button>
<p>Work Timer : <span id="workSecs"></span></p>