为什么我的"分钟数"变成了负数?



几个星期以来,我一直在研究一个计时器。当我试图用0减去分钟时,它变成了负数,而没有触及小时。我尝试了几种方法,阅读了文档,并观看了几个YouTube视频,但没有一种方法对我有帮助。下面是我使用的代码:

seconds--;
if (seconds === 0) {
seconds = 59;
minutes--;
if (minutes < 10) {
minutesText.innerText = '0' + minutes.toString()
} else {
minutesText.innerText = minutes;
}
if (minutes === 0) {
minutes = 59;
hours--;
if (hours < 10) {
hoursText.innerText = '0' + hours.toString()
} else {
hoursText.innerText = hours;
}
if (hours === 0) {
window.clearInterval(interval);
}
}
}
if (seconds < 10) {
secondsText.innerText = '0' + seconds.toString();
} else {
secondsText.innerText = seconds;
}

它从不接触hours--,也不会使分钟等于59。

(抱歉,如果这是一个简单的修复,我刚刚开始在JS)

你有几个问题:

  1. 您正在更新minutesText.innerText之前您检查minutes是否为0,因此需要更改为59。它应该在if (minutes === 0)块之后。
  2. 在递减之前,您需要检查值是否为0,否则您将永远无法捕获0值。

这段代码包含了这些修复。

let hoursText = document.getElementById('hours');
let minutesText = document.getElementById('minutes');
let secondsText = document.getElementById('seconds');

function updateTimer() {
hours = +hoursText.innerText;
minutes = +minutesText.innerText;
seconds = +secondsText.innerText;
if (seconds === 0) {
seconds = 59;
if (minutes === 0) {
minutes = 59;
if (hours === 0) {
window.clearInterval(interval);
return;
} else {
hours--;
}
if (hours < 10) {
hoursText.innerText = '0' + hours.toString()
} else {
hoursText.innerText = hours;
}
} else {
minutes--;
}
if (minutes < 10) {
minutesText.innerText = '0' + minutes.toString()
} else {
minutesText.innerText = minutes;
}
} else {
seconds--;
}
if (seconds < 10) {
secondsText.innerText = '0' + seconds.toString();
} else {
secondsText.innerText = seconds;
}
}
interval = setInterval(updateTimer, 1000);
<div><span id="hours">00</span>:<span id="minutes">01</span>:<span id="seconds">13</span></div>

最新更新