如何避免javascript倒数计时器不要消极?

时间:2015-08-25 17:10:36

标签: javascript countdowntimer

我已经在这里进行倒计时,出于测试目的,我将其设置为 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>

2 个答案:

答案 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";
    }
}

https://jsfiddle.net/sdd8ubxh/2/

答案 1 :(得分:0)

对于四舍五入,我认为使用parseInt()而不是Math.floor()可以获得您正在寻找的内容(截断)。

至于格式,我认为您需要检查剩余秒数是否小于0:

var isNegative = false;
if(seconds < 0)
{
    isNegative = true;
    remainingSeconds = Math.abs(remainingSeconds);
}

然后在前面&#34; - &#34;如果isNegative