Javascript 倒计时计时器未使用clearInterval()停止
我有一个问题,让这个倒计时停止在零,这样时间就不会显示为负值。正在调用console.log并正常工作,但由于某些原因,Javascript 倒计时计时器未使用clearInterval()停止,javascript,clearinterval,Javascript,Clearinterval,我有一个问题,让这个倒计时停止在零,这样时间就不会显示为负值。正在调用console.log并正常工作,但由于某些原因,clearInterval()未被调用。这快把我逼疯了,我快要戒烟了 const timerContainer=document.getElementById('timerContainer'); 常数三分钟=60*0.1//5秒用于测试 startTimer(三分钟,timerContainer); 功能启动计时器(持续时间、显示){ 让我们开始=Date.now(); 设
clearInterval()
未被调用。这快把我逼疯了,我快要戒烟了
const timerContainer=document.getElementById('timerContainer');
常数三分钟=60*0.1//5秒用于测试
startTimer(三分钟,timerContainer);
功能启动计时器(持续时间、显示){
让我们开始=Date.now();
设差,分,秒;
让计时器=()=>{
diff=持续时间-((Date.now()-start)/1000)| 0);
//使用按位截断浮点
最小值=(差值/60)| 0;
sec=(差异%60)| 0;
最小值=最小值<10?'0'+最小值:最小值;
秒=秒<10?'0'+秒:秒;
display.textContent=min+':'+秒;
if(diff不传递要停止的函数
将引用传递给您启动的计时器,因此,您需要确保启动计时器时,捕获对将从计时器返回的ID的引用
// Function that the timer will invoke
function callback(){
. . .
}
// Set up and initiate a timer and capture a reference to its unique ID
var timerID = setInterval(callback, 1000);
// When needed, cancel the timer by passing the reference to it
clearInterval(timerID);
不要传递要停止的函数
将引用传递给您启动的计时器,因此,您需要确保启动计时器时,捕获对将从计时器返回的ID的引用
// Function that the timer will invoke
function callback(){
. . .
}
// Set up and initiate a timer and capture a reference to its unique ID
var timerID = setInterval(callback, 1000);
// When needed, cancel the timer by passing the reference to it
clearInterval(timerID);
您没有保存设置间隔(计时器,1000)的结果;
您应该使用以下选项:
let timerId;
timer();
timerId = setInterval(timer, 1000);
function stopTimer() {
clearInterval(timerId);
console.log("time's up", diff)
};
正如您可能看到的,
setInterval
的结果是一个数字(节点中的对象),然后您需要做的就是将该值传递给clearInterval
,因此我们将该值保存在变量timerId
中以供参考。您没有保存setInterval(timer,1000);
您应该使用以下选项:
let timerId;
timer();
timerId = setInterval(timer, 1000);
function stopTimer() {
clearInterval(timerId);
console.log("time's up", diff)
};
正如您可能看到的,
setInterval
的结果是一个数字(节点中的对象),然后您需要做的就是将该值传递给clearInterval
,因此我们将该值保存在变量timerId
中以供参考。代码已修复请确保您修复了提交按钮代码。
您应该首先将setInterval的值赋给一个变量。该变量在调用clearInterval时使用,clearInterval实际上会清除该间隔
const timerContainer = document.getElementById('timerContainer');
const THREEMINUTES = 60 * 0.1;//5 seconds for testing
startTimer(THREEMINUTES, timerContainer);
var timer = null;
function startTimer(duration, display) {
let start = Date.now();
let diff, min, sec;
let timer = () => {
diff = duration - (((Date.now() - start) / 1000) | 0);
//use bitwise to truncate the float
min = (diff / 60) | 0;
sec = (diff % 60) | 0;
min = min < 10 ? '0' + min : min;
sec = sec < 10 ? '0' + sec : sec;
display.textContent = min + ':' + sec;
if (diff <= 0) {
stopTimer();
submit.disabled = 'true';
};
};
//call timer immediately otherwise we wait a full second
timer();
timer = setInterval(timer, 1000);
function stopTimer() {
clearInterval(timer);
console.log("time's up", diff);
};
}
const timerContainer=document.getElementById('timerContainer');
const 3min=60*0.1;//5秒测试
startTimer(三分钟,timerContainer);
var定时器=null;
功能启动计时器(持续时间、显示){
让我们开始=Date.now();
设差,分,秒;
让计时器=()=>{
diff=持续时间-((Date.now()-start)/1000)| 0);
//使用按位截断浮点
最小值=(差值/60)| 0;
sec=(差异%60)| 0;
最小值=最小值<10?'0'+最小值:最小值;
秒=秒<10?'0'+秒:秒;
display.textContent=min+':'+秒;
如果(diff代码已修复,请确保修复提交按钮代码。
您应该首先将setInterval的值赋给一个变量。该变量在调用clearInterval时使用,clearInterval实际上会清除该间隔
const timerContainer = document.getElementById('timerContainer');
const THREEMINUTES = 60 * 0.1;//5 seconds for testing
startTimer(THREEMINUTES, timerContainer);
var timer = null;
function startTimer(duration, display) {
let start = Date.now();
let diff, min, sec;
let timer = () => {
diff = duration - (((Date.now() - start) / 1000) | 0);
//use bitwise to truncate the float
min = (diff / 60) | 0;
sec = (diff % 60) | 0;
min = min < 10 ? '0' + min : min;
sec = sec < 10 ? '0' + sec : sec;
display.textContent = min + ':' + sec;
if (diff <= 0) {
stopTimer();
submit.disabled = 'true';
};
};
//call timer immediately otherwise we wait a full second
timer();
timer = setInterval(timer, 1000);
function stopTimer() {
clearInterval(timer);
console.log("time's up", diff);
};
}
const timerContainer=document.getElementById('timerContainer');
常数三分钟=60*0.1;//5秒用于测试
startTimer(三分钟,timerContainer);
var定时器=null;
功能启动计时器(持续时间、显示){
让我们开始=Date.now();
设差,分,秒;
让计时器=()=>{
diff=持续时间-((Date.now()-start)/1000)| 0);
//使用按位截断浮点
最小值=(差值/60)| 0;
sec=(差异%60)| 0;
最小值=最小值<10?'0'+最小值:最小值;
秒=秒<10?'0'+秒:秒;
display.textContent=min+':'+秒;
if(diff)答案不应该只是工作代码。他们应该解释问题是什么以及你是如何解决的。你正在重置timer
答案不应该只是工作代码。他们应该解释问题是什么以及你是如何解决的。你正在重置timer