gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:02:49 25 4
gpt4 key购买 nike

我试图使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com