首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在变量中使用clearInterval

在变量中使用clearInterval
EN

Stack Overflow用户
提问于 2018-06-01 08:07:17
回答 1查看 562关注 0票数 0

我正在创建一个简单的JavaScript计时器。首先,这是我正在使用的代码:

代码语言:javascript
复制
//Variables used for the timer
var timer = "waiting",
    seconds = 0,
    minutes = 0,
    extraFill1 = "",
    extraFill2 = "";

//Check whether to start or stop the timer
function toggleClock() {
    if (timer === "waiting") {
        setInterval(start, 1000);
        timer = "executing";
        document.getElementById("btn").innerText = "Stop";
    }
    else {
        clearInterval(start);
        timer = "waiting";
        document.getElementById("btn").innerText = "Start";
    }   
}

//Increment seconds and display correctly
function start() {
    seconds++;

    //Add a leading zero for 1 digit numbers (seconds)
    if (seconds < 10 || seconds === 60) {
        extraFill1 = "0";
    }
    else {
        extraFill1 = "";
    }

    //Increment minute when seconds reaches 60
    if (seconds === 60) {
        minutes += 1;
        seconds = 0;
    }

    //Add a leading zero for 1 digit numbers (minutes)
    if (minutes < 10) {
        extraFill2 = "0";
    }
    else {
        extraFill2 = "";
    }

    //display results
    document.getElementById("result").innerHTML = extraFill2 + minutes + ":" + extraFill1 + seconds;
}

在我的第一个函数toggleClock()中,我已经声明,如果为timer !== waiting,则执行clearInterval(start)。如果timer === "executing的话我想要clearInterval(start)。这不起作用(我认为这是因为它有一个局部作用域?)。为了解决这个问题,我尝试写道:

代码语言:javascript
复制
var myTimer = setInterval(start, 1000);

当我想启动计时器时,我计划调用myTimer。相反,只要加载了页面(并且声明了变量),间隔就开始了。

我如何设置一个功能的时间间隔(点击按钮时),并有能力在以后停止/清除该时间间隔(按下相同的按钮)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 08:09:14

您需要将前面对setInterval的调用结果传递给clearInterval;不需要将函数传递给clearInterval,而是将intervalID传递给它。例如:

代码语言:javascript
复制
let clockInterval;
function toggleClock() {
  if (timer === "waiting") {
    clockInterval = setInterval(start, 1000);
    timer = "executing";
    document.getElementById("btn").innerText = "Stop";
  }
  else {
    clearInterval(clockInterval);
    timer = "waiting";
    document.getElementById("btn").innerText = "Start";
  }   
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50634418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档