Javascript clearInterval()后恢复计时器
Javascript clearInterval()后恢复计时器,javascript,stopwatch,Javascript,Stopwatch,clearInterval功能仅停止代码中的计时器,而不是实际时间。单击stop按钮后,计时器停止,但它似乎仍在后台运行。当我再次单击start按钮时,它不会从停止的位置恢复,而是显示在后台运行的实际时间。请参阅代码中的操作 再次单击开始按钮,点击停止按钮后,如何真正停止计时器并恢复计时器 var timestart=new Date(); 函数start(){ 已启动=窗口设置间隔(时钟运行,10); } 函数停止(){ 窗口。clearInterval(已启动); } 函数clockRun
clearInterval
功能仅停止代码中的计时器,而不是实际时间。单击stop
按钮后,计时器停止,但它似乎仍在后台运行。当我再次单击start
按钮时,它不会从停止的位置恢复,而是显示在后台运行的实际时间。请参阅代码中的操作
再次单击开始
按钮,点击停止
按钮后,如何真正停止计时器并恢复计时器
var timestart=new Date();
函数start(){
已启动=窗口设置间隔(时钟运行,10);
}
函数停止(){
窗口。clearInterval(已启动);
}
函数clockRunning(){
currentTime=新日期()
,timeappeased=新日期(currentTime-timebegind)
,hour=timepassed.getUTCHours()
,min=timeappeased.getUTCMinutes()
,sec=timeappeased.getUTCSeconds()
,ms=timeappeased.getutcmillesons();
document.getElementById(“显示区域”).innerHTML=
(小时>9小时:“0”+小时)+“:”+
(最小值>9?最小值:“0”+最小值)+“:”+
(秒>9秒:“0”+秒)+”
(ms>99?ms:ms>9?“0”+ms:“00”+ms);
};
函数重置(){
窗口。clearInterval(已启动);
运行=0;
小时=分钟=秒=毫秒=0;
document.getElementById(“显示区域”).innerHTML=“00:00:00.000”;
}
秒表
#显示区{字体大小:20pt;}
00:00:00.000
开始
停止
重置
这是因为您从未重置timestart
。您将继续在开始时间使用相同的值
您需要将此值设置为start()
内的当前时间,否则您只是使用加载页面的时间作为参考时间,而不是上次调用start()
的时间
var timeBegan;
function start() {
timeBegan = new Date();
started = window.setInterval(clockRunning, 10);
}
或者,您可以在reset()
中执行此操作,然后单击“停止”按钮,然后单击“开始”按钮,将更像一个圈速计时器;你可以冻结时间,但在后台它会一直计数,直到你点击重置按钮
如果您希望“停止”按钮暂停计时器,那么在单击“停止”时,您需要在某处记录当前持续时间。然后在
clockRunning()
函数中,您可以将此持续时间添加到时间减法计算结果中。(当然,reset()
应该清除此存储的持续时间。)与当前的timeappeased
实现不同,您需要的是为timeappeased
的每次调用设置一个求和计数器,您可以将上次调用的clockRunning
时间差添加到TimePassed
start
应启动/恢复clockRunning
函数调用clockRunning
应将与上次clockRunning
调用的时间差添加到timeappeased
中stop
应停止clockRunning
函数调用,并将clockRunning
调用时间设置为类似null
或-1
的值start
中,如果上次调用clockRunning
的时间是null
或-1
(基本上,如果调用了stop),则将上次调用clockRunning
的时间设置为现在李>
“但它似乎仍在后台运行”——你怎么会这么想?@DavidWaters Dvorak FTW。但我想从它离开的时候继续。当我放置
timebegind=newdate()时
在start
中,它从时间零点开始重新启动,我的意思是它不会从我单击stop
按钮时停止的地方恢复。@Zip请看我答案的最后一段。当你停止计时器时,你需要将当前持续时间存储在某个地方,以便在单击“下一步开始”时将其添加回。最后一段对我来说有点棘手。想帮忙吗?我已经试了两个小时了:(你为什么要删除你最后的评论?我再也看不到了。