在JS秒表计时器中添加对小时的支持

时间:2014-09-13 21:32:37

标签: javascript

我正在尝试在我的JS秒表计时器上添加数小时的支持,并且似乎无法围绕数小时的数学部分...

这是我的尝试,特别是我很确定问题出在h变量中。

function formatTime(time) {
      var h = m = s = ms = 0;
      var newTime = '';

      h = Math.floor(time / (60 * 1000))
      m = Math.floor(time / (60 * 1000));
      time = time % (60 * 1000);
      s = Math.floor(time / 1000);
      ms = time % 1000;

      newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 2);
      return newTime;
      }

这是完整的JS(如果它有帮助):

<script type="text/javascript">
      var clsStopwatch = function () {

      var startAt = 0;
      var lapTime = 0;

      var now = function () {
          return (new Date()).getTime();
      };

      this.start = function () {
          startAt = startAt ? startAt : now();
      };

      this.stop = function () {
          lapTime = startAt ? lapTime + now() - startAt : lapTime;
          startAt = 0;
      };

      this.time = function () {
          return lapTime + (startAt ? now() - startAt : 0);
      };
      };

      var x = new clsStopwatch();
      var $time;
      var clocktimer;

      function pad(num, size) {
      var s = "0000" + num;
      return s.substr(s.length - size);
      }

      function formatTime(time) {
      var h = m = s = ms = 0;
      var newTime = '';

      h = Math.floor(time / (60 * 1000))
      m = Math.floor(time / (60 * 1000));
      time = time % (60 * 1000);
      s = Math.floor(time / 1000);
      ms = time % 1000;

      newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 2);
      return newTime;
      }

      function show() {
      $time = document.getElementById('time');
      update();
      }

      function update() {
      $time.innerHTML = formatTime(x.time());
      }

      function start() {
      clocktimer = setInterval("update()", 1);
      x.start();
      }

      function stop() {
      x.stop();
      document.getElementById('counter').value = formatTime(x.time());
      clearInterval(clocktimer);
      }
      </script>

1 个答案:

答案 0 :(得分:2)

h的分配应该是:

h = Math.floor(time / (3600 * 1000));

您还需要添加

time = time % (3600 * 1000);

之后(在您计算分钟数之前)或者您将获得总分钟数。