计时器归零

Stop timer at zero

我想让我的倒计时停在零,但它会重置而不是停止。

我在 runTimer 函数的末尾添加了一个条件语句,但没有任何反应。它只是重置。

我要结束一项重要的练习。我正在修改它并让它倒计时。

function runTimer() {
    let currentTime = leadingZero(timer[1]) + ":" + leadingZero(timer[2]);
    theTimer.innerHTML = currentTime;
    timer[3]--;

    timer[0] = Math.floor((timer[3]/100)/60); //minutes
    timer[1] = Math.floor((timer[3]/100) - (timer[0] * 60)); //seconds
    timer[2] = Math.floor(timer[3] - (timer[1] * 100) - (timer[0] * 6000)); //hundredths

    if (currentTime = 0) {
      clearInterval(interval);
    }

}

我希望它停在零,但它只是重置回 59:00...我希望它停在 00:00。

问题出在这部分:

if (currentTime = 0)

由于您正在检查值是否为 0,因此您不想 分配 0,而是想比较 currentTime0。这是通过 === 运算符完成的。总结一下:

=就是给一个变量一个值。 (左边是变量,右边是赋值)

=====是比较两个值。(Difference between == and === in JavaScript)

你的行应该是:

if (currentTime == 0)

希望对您有所帮助。 :)

两点。

1) 如前所述,您的 if 子句将不起作用,因为您使用的是“=”(单个等号)。 JavaScript 中的单个等号会 分配 值,而不是 比较 值。但是,您想要比较值并需要使用双等号或三等号。

2) 即使您更改它,currentTime 也可能永远不会计算为零,因为您之前已将字符串分配给 currentTime。因此,即使 currentTime 为 "00:00",字符串的计算结果也不会为 0(见图)

我猜你更想做这样的事情:

if (timer[2] === 0 && timer [1] === 0 && timer[0] === 0) {
    clearInterval(interval);
}

或者很可能这就足够了:

if (timer[3] <= 0) {
    clearInterval(interval);
}