我已经在这里进行倒计时,出于测试目的,我将其设置为 10秒,但是一旦它完善了,我将把它作为30分钟。一切都顺利进行,直到倒计时结果为止,我希望它是负面的,但是格式正确并且不能从0跳到-01:00。 Math.Floor
似乎是一个好主意,但是使用此代码,它会立即以负数运行。此外,一旦它是负数,格式为-00:0-0,我想-00:00 。
如果格式为负数,该如何修复?
请不要以对象为导向,我们的网络服务器已经过时了几年。
var seconds = 10;
function secondPassed() {
var minutes = Math.round((seconds - 30)/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10)
{
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds;
if (seconds > 0) {
seconds--;
if (seconds > 8) {
document.body.style.backgroundColor = "green"; }
else if (seconds == 8) {document.body.style.backgroundColor = "yellow";}
else if (seconds == 3) {document.body.style.backgroundColor = "red";}
}
else{
seconds--;
}
}
var countdownTimer = setInterval('secondPassed()', 1000);
<body onload = "getSeconds()">
<p align ="center">
<span id="countdown" style="color:black; font-size: 20px; font-weight: bold"> </span>
</p>
</body>
答案 0 :(得分:0)
我认为最简单的方法是始终将秒视为正数,但如果它实际上是负数,则显示-
:
var abs_seconds = Math.abs(seconds);
var is_negative = seconds < 0;
var minutes = Math.round((abs_seconds - 30)/60);
var remainingSeconds = abs_seconds % 60;
if (remainingSeconds < 10)
{
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('countdown').innerHTML = (is_negative ? '-' : '') + minutes + ":" + remainingSeconds;
seconds--;
if (!is_negative) {
if (seconds > 8) {
document.body.style.backgroundColor = "green";
} else if (seconds == 8) {
document.body.style.backgroundColor = "yellow";
} else if (seconds == 3) {
document.body.style.backgroundColor = "red";
}
}
答案 1 :(得分:0)
对于四舍五入,我认为使用parseInt()
而不是Math.floor()
可以获得您正在寻找的内容(截断)。
至于格式,我认为您需要检查剩余秒数是否小于0:
var isNegative = false;
if(seconds < 0)
{
isNegative = true;
remainingSeconds = Math.abs(remainingSeconds);
}
然后在前面&#34; - &#34;如果isNegative
。