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>