首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript倒计时不自动倒计时

JavaScript倒计时不自动倒计时
EN

Stack Overflow用户
提问于 2015-11-15 04:13:24
回答 3查看 54关注 0票数 2

下面是我的JS,然后是HTML。我不明白为什么我的倒计时不自动倒计时。您必须每秒钟刷新一次以查看所剩时间的正确数量。有什么想法吗?顺便说一下,这是一个圣诞节倒计时网站,我正在工作。

代码语言:javascript
复制
var Countdowns = function(end, elements, timer, callback) {
  var _seconds = 1000,
    _minutes = _seconds * 60,
    _hours = _minutes * 60,
    _days = _hours * 24,

    end = new Date(end)
  timer,

  calculate = function() {
    var now = new Date(),
      remaining = end.getTime() - now.getTime(),
      data;


    if (isNaN(end)) {
      console.log('Invalid date/time')
      return;
    }

    if (remaining <= 0) { // clear timer
      clearInterval(timer);
      // callback
      if (typeof callback === 'function') {
        callback()
      }
    } else {
      if (!timer) {
        timer = setInterval(calculate, _seconds);
      }
      data = {
        'days': Math.floor(remaining / _days),
        'hours': Math.floor((remaining % _days) / _hours),
        'minutes': Math.floor((remaining % _hours) / _minutes),
        'seconds': Math.floor((remaining % _minutes) / _seconds),
      }

      if (elements.length) {
        for (x in elements) {
          var x = elements[x];
          data[x] = ('00' + data[x]).slice(-2);
          document.getElementById(x).innerHTML = data[x];
        }
      }
    }






  };
  calculate();
}
代码语言:javascript
复制
<!DOCTYPE html>
<html>

<head>
  <title>Countdowns</title>
</head>

<body>
  <span id="days">00</span>
  <span id="hours">00</span>
  <span id="minutes">00</span>
  <span id="seconds">00</span>

  <script src="Countdowns.js"></script>
  <script>
    var callbackfunction = function() {
      console.log('Done!')
    }
    Countdowns('12/25/2015 00:00:00 AM', ['days', 'hours', 'minutes', 'seconds']);
    callbackfunction);
  </script>
</body>

</html>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-15 04:32:11

你有几个小错误。试试这个:

代码语言:javascript
复制
var Countdowns = function(end, elements, timer, callback) {
  var _seconds = 1000,
    _minutes = _seconds * 60,
    _hours = _minutes * 60,
    _days = _hours * 24,

    end = new Date(end)
  timer,

  calculate = function() {
    var now = new Date(),
      remaining = end.getTime() - now.getTime(),
      data;


    if (isNaN(end)) {
      console.log('Invalid date/time')
      return;
    }

    if (remaining <= 0) { // clear timer
      clearInterval(timer);
      // callback
      if (typeof callback === 'function') {
        callback()
      }
    } else {
      if (!timer) {
        timer = setInterval(calculate, _seconds);
      }
      data = {
        'days': Math.floor(remaining / _days),
        'hours': Math.floor((remaining % _days) / _hours),
        'minutes': Math.floor((remaining % _hours) / _minutes),
        'seconds': Math.floor((remaining % _minutes) / _seconds),
      }

      if (elements.length) {
        for (x in elements) {
          var x = elements[x];
          data[x] = ('00' + data[x]).slice(-2);
          document.getElementById(x).innerHTML = data[x];
        }
      }
    }
  };
  calculate();
};

var callbackfunction = function() {
  console.log('Done!')
}
Countdowns('12/25/2015 00:00:00 AM', ['days', 'hours', 'minutes', 'seconds']);
callbackfunction();
代码语言:javascript
复制
<!DOCTYPE html>
<html>

<head>
  <title>Countdowns</title>
</head>

<body>
  <span id="days">00</span>
  <span id="hours">00</span>
  <span id="minutes">00</span>
  <span id="seconds">00</span>
  <script src="Countdowns.js"></script>
</body>

</html>

票数 0
EN

Stack Overflow用户

发布于 2015-11-15 04:24:14

callbackfunction);替换为callbackfunction();

票数 0
EN

Stack Overflow用户

发布于 2015-11-15 04:28:00

代码语言:javascript
复制
var Countdowns = function(end, elements, timer, callback) {
  var _seconds = 1000,
    _minutes = _seconds * 60,
    _hours = _minutes * 60,
    _days = _hours * 24,
    end = new Date(end)
  timer,
  calculate = function() {
    var now = new Date(),
      remaining = end.getTime() - now.getTime(),
      data;
    if (isNaN(end)) {
      console.log('Invalid date/time')
      return;
    }
    if (remaining <= 0) { // clear timer
      clearInterval(timer);
      // callback
      if (typeof callback === 'function') {
        callback()
      }
    } else {
      if (!timer) {
        timer = setInterval(calculate, _seconds);
      }
      data = {
        'days': Math.floor(remaining / _days),
        'hours': Math.floor((remaining % _days) / _hours),
        'minutes': Math.floor((remaining % _hours) / _minutes),
        'seconds': Math.floor((remaining % _minutes) / _seconds),
      }

      if (elements.length) {
        for (x in elements) {
          var x = elements[x];
          data[x] = ('00' + data[x]).slice(-2);
          document.getElementById(x).innerHTML = data[x];
        }
      }
    }
  };
  calculate();
};

var callbackfunction = function() {
  console.log('Done!')
};
Countdowns('12/25/2015 00:00:00 AM', ['days', 'hours', 'minutes', 'seconds']);
代码语言:javascript
复制
<span id="days">00</span>
  <span id="hours">00</span>
  <span id="minutes">00</span>
  <span id="seconds">00</span>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33716327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档