我使用JS制作的秒表不起作用

时间:2016-10-02 11:51:50

标签: javascript

我已经多次运行代码,尝试修复我在代码中发现的任何错误,但它似乎无法正常工作。

我正在使用 setInterval()循环。该功能甚至不运行一次。问题是什么?



function stopWatch () {

  var hours = Number(document.getElementById('hours').innerHTML);
  var minutes = Number(document.getElementById('minutes').innerHTML);
  var seconds = Number(document.getElementById('seconds').innerHTML);

  if (seconds<60) {
    seconds++
  } else {
    seconds = 0;
    minutes++
  }

  if (minutes == 60) {
    minutes = 0;
    hours++
  }

  if (seconds.length==2) {
    document.getElementById('seconds').innerHTML = seconds;
  } else {
    document.getElementById('seconds').innerHTML = '0' + seconds;
  }

  if (minutes.length==2) {
    document.getElementById('minutes').innerHTML = minutes;
  } else {
    document.getElementById('minutes').innerHTML = '0' + minutes;
  }

  if (hours.length==2) {
    document.getElementById('hours').innerHTML = hours;
  }

  if (hours.length==1) {
    document.getElementById('hours').innerHTML = '0' + hours;
  }
  
 }

setInterval(stopWatch,1000)
&#13;
<html>
<head></head>
<body>
    <p>
        <span id='hours'>00</span>:<span id='minutes'>00</span>:<span id='seconds'>00</span>
    </p>
</body>
</html>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

你的意思是为什么秒表没有运行? 您应该将它包装在setInteraval中,以便每秒更新一次:

    Files.write(p, s.getBytes(),StandardOpenOption.APPEND);

答案 1 :(得分:1)

您的代码只运行一次。你需要使用一些描述的循环。

有很多方法可以做到这一点。一个简单的例子就是使用setInterval(function() { stopWatch() },1000); 每秒调用函数的内部函数。

您的逻辑中也有错误。你不应该检查数字的长度(setInterval)。您应该检查数字是否大于seconds.length==29):

seconds > 9
function stopWatch() {

  setInterval(function() {

    var hours = Number(document.getElementById('hours').innerHTML);
    var minutes = Number(document.getElementById('minutes').innerHTML);
    var seconds = Number(document.getElementById('seconds').innerHTML);

    if (seconds < 60) {
      seconds++
    } else {
      seconds = 0;
      minutes++
    }

    if (minutes == 60) {
      minutes = 0;
      hours++
    }

    if (seconds > 9) {
      document.getElementById('seconds').innerHTML = seconds;
    } else {
      document.getElementById('seconds').innerHTML = '0' + seconds;
    }

    if (minutes > 9) {
      document.getElementById('minutes').innerHTML = minutes;
    } else {
      document.getElementById('minutes').innerHTML = '0' + minutes;
    }

    if (hours > 9) {
      document.getElementById('hours').innerHTML = hours;
    } else {
        document.getElementById('hours').innerHTML = '0' + hours;
    }

  }, 1000);

}

stopWatch()