javascript - 计数器不断重置为 setInterval 循环上声明的变量

标签 javascript typescript timer setinterval seconds

我试图使用 setInterval 来显示一个每秒增加的计时器。

该变量似乎在每次循环时都会重置自身;结果是 HTML 页面上的显示没有改变。

我已将变量移到函数之外,但这不起作用。不太确定从这里去哪里。

    this.intervalFour = setInterval(() => this.totalTime(this.secs, this.restSecs), 1000);


    totalTime(seconds, rests) {
        var fullTime = seconds * 8 + rests * 7;
        fullTime--;
        var secCounter: any = 0;
        var minCounter: any = 0;
        secCounter++;
        if (secCounter < 10) {
            secCounter = "0" + secCounter;
        }
        if (minCounter < 10) {
            minCounter = "0" + minCounter;
        }
        if (secCounter == 60) {
            secCounter = 0;
            minCounter++;
        }
        if (fullTime = 0) {
            clearInterval(this.intervalFour);
        }
        this.m.innerHTML = minCounter;
        this.s.innerHTML = secCounter;
        console.log(secCounter, minCounter, "test");
}

我知道这是一件愚蠢的事情,但我找不到让 secCounter 在每个循环中增加 1 的解决方案。

最佳答案

您可以尝试以下方法。

虽然我没有一定的值(value),因此我评论了该代码,但您可以根据需要取消注释该代码:

<script type="text/javascript">
      var secs = 10;
      var restSecs = 10;
      var secCounter = 0;
      var minCounter = 0;
      this.intervalFour = setInterval(() => this.totalTime(this.secs, this.restSecs), 1000);


    function totalTime(seconds, rests) {
        var fullTime = seconds * 8 + rests * 7;
        fullTime--;
        this.secCounter++;
        if (this.secCounter < 10) {
            this.secCounter = "0" + this.secCounter;
        }
        if (this.minCounter < 10) {
            this.minCounter = "0" + this.minCounter;
        }
        if (this.secCounter == 60) {
            this.secCounter = 0;
            this.minCounter++;
        }
        // if (fullTime = 0) {
        //     clearInterval(this.intervalFour);
        // }
        console.log("this.minCounter" , this.minCounter);
        console.log("this.secCounter" , this.secCounter);
        // this.m.innerHTML = this.minCounter;
        // this.s.innerHTML = this.secCounter;
        console.log(this.secCounter, this.minCounter, "test");
}

在此解决方案中,秒数每秒都会完美增加。

关于javascript - 计数器不断重置为 setInterval 循环上声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716675/

相关文章:

angular - 使用 Angular Service Worker 发送 JWT token

java - 如何在 NativeScript 插件中链接本地 JAR 依赖项

android - postAtTime 不触发

Golang 计时器过期 VS 停止之间的区别?

javascript - HTML ID 原来就像侵入式 JavaScript?

javascript - React .scrollLeft 无法读取空值

javascript - JavaScript 或 AS3 中的 parseInt 返回错误值

angular - 如何在 Angular 项目中为自定义 404 页面设置路由

c - 需要处理大量定时器/超时的建议

javascript - 无法使用 Firefox 从下拉列表中进行选择(适用于 Chrome)