如何正确使用 setInterval 和 clearInterval

我是艾

这是我写的代码。

function formatDate(date) {
  var day;
  if (date.getDate() < 10) {
    day = "0" + date.getDate();
  } else {
    day = date.getDate();
  }

  var month;
  var tempMonth = date.getMonth() + 1;
  if ( tempMonth < 10){
    month = "0" + tempMonth;
  } else {
    month = tempMonth;
  }
  var year = date.getFullYear();

  return year + "-" + month + "-" + day;
}

Date.prototype.addDays = function(days) {
    var date = new Date(this.valueOf());
    date.setDate(date.getDate() + days);
    return date;
}

jobDate = new Date(2016, 3, 7);
endDate = new Date(2016, 4, 1);
expireInterval = false;

timeoutVar = setTimeout(runJobFromJS,1000);

function runJobFromJS(){
  var strDate = formatDate(jobDate);
  console.log(strDate);

  jobDate = jobDate.addDays(1);

  if (jobDate >= endDate){
    clearInterval(timeoutVar);
  }
}

我原以为strDate会打印从 4 月 7 日到 5 月 1 日的日期。但它只打印一次。为什么这setInterval不能正常工作

物联网

您正在使用setTimeout(在以毫秒为单位的时间后执行一次函数)而不是setInterval(连续执行函数)。

的文档setInterval

WindowOrWorkerGlobalScope mixin 的 setInterval() 方法重复调用函数或执行代码片段,每次调用之间有固定的时间延迟。它返回一个唯一标识间隔的间隔 ID,因此您可以稍后通过调用 clearInterval() 将其删除。

的文档setTimeout

WindowOrWorkerGlobalScope mixin(以及 window.setTimeout 的后继者)的 setTimeout() 方法设置一个计时器,该计时器在计时器到期后执行一次函数或指定的代码段。

timeoutVar = setInterval(runJobFromJS,1000);//not setTimeout

function runJobFromJS(){
  var strDate = formatDate(jobDate);
  console.log(strDate);

  jobDate = jobDate.addDays(1);

  if (jobDate >= endDate){
    clearInterval(timeoutVar);
  }
}

演示:

function formatDate(date) {
  var day;
  if (date.getDate() < 10) {
    day = "0" + date.getDate();
  } else {
    day = date.getDate();
  }

  var month;
  var tempMonth = date.getMonth() + 1;
  if ( tempMonth < 10){
    month = "0" + tempMonth;
  } else {
    month = tempMonth;
  }
  var year = date.getFullYear();

  return year + "-" + month + "-" + day;
}

Date.prototype.addDays = function(days) {
    var date = new Date(this.valueOf());
    date.setDate(date.getDate() + days);
    return date;
}

jobDate = new Date(2016, 3, 7);
endDate = new Date(2016, 4, 1);
expireInterval = false;

timeoutVar = setInterval(runJobFromJS,1000);

function runJobFromJS(){
  var strDate = formatDate(jobDate);
  document.getElementById("result").textContent = strDate;
  //console.log(strDate);

  jobDate = jobDate.addDays(1);

  if (jobDate >= endDate){
    clearInterval(timeoutVar);
  }
}
<span id="result"></span>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

setInterval和clearInterval使用相同的按钮?

来自分类Dev

jQuery setInterval和clearInterval

来自分类Dev

jQuery setInterval和clearInterval

来自分类Dev

如何在同一函数中使用setInterval()和clearInterval()

来自分类Dev

JavaScript:setInterval和clearInterval,哪种方法正确?

来自分类Dev

React中的setInterval()和clearInterval()

来自分类Dev

如何将setInterval和clearInterval用作函数

来自分类Dev

需要帮助以在Javascript中使用setInterval和clearInterval

来自分类Dev

无法使用clearInterval停止setInterval

来自分类Dev

if else语句中的clearInterval和setInterval

来自分类Dev

在哪里放置 setInterval 和 clearInterval

来自分类Dev

如何使用setInterval和clearInterval在javascript中十秒后停止计时器?

来自分类Dev

如何使用setInterval和clearInterval在javascript中十秒后停止计时器?

来自分类Dev

如何使用内部的clearInterval创建函数setInterval?

来自分类Dev

每次单击如何停止(clearInterval)setInterval

来自分类Dev

setInterval和clearInterval的Ember实现是什么

来自分类Dev

完成所有动画后的clearInterval()和setInterval()

来自分类Dev

JavaScript中的setInterval和clearInterval作为单线程语言

来自分类Dev

在多个javascript对象中调用setInterval和clearInterval函数

来自分类Dev

完成所有动画后的clearInterval()和setInterval()

来自分类Dev

为什么我无法控制 setinterval 和 clearinterval javascript?

来自分类Dev

如何正确使用 clearInterval()?

来自分类Dev

clearInterval不清除setInterval

来自分类Dev

setInterval / clearInterval问题

来自分类Dev

如何使用setInterval和clearInterval在向右和向下移动后沿对角线向左移动文本(返回以开始)

来自分类Dev

如何在jQuery中的函数外部调用clearInterval?在setInterval之外

来自分类Dev

Javascript clearInterval()无法正常工作,如何停止setInterval()?

来自分类Dev

如何在jQuery中的函数外部调用clearInterval?在setInterval之外

来自分类Dev

可以使用setinterval直接调用clearinterval吗?

Related 相关文章

  1. 1

    setInterval和clearInterval使用相同的按钮?

  2. 2

    jQuery setInterval和clearInterval

  3. 3

    jQuery setInterval和clearInterval

  4. 4

    如何在同一函数中使用setInterval()和clearInterval()

  5. 5

    JavaScript:setInterval和clearInterval,哪种方法正确?

  6. 6

    React中的setInterval()和clearInterval()

  7. 7

    如何将setInterval和clearInterval用作函数

  8. 8

    需要帮助以在Javascript中使用setInterval和clearInterval

  9. 9

    无法使用clearInterval停止setInterval

  10. 10

    if else语句中的clearInterval和setInterval

  11. 11

    在哪里放置 setInterval 和 clearInterval

  12. 12

    如何使用setInterval和clearInterval在javascript中十秒后停止计时器?

  13. 13

    如何使用setInterval和clearInterval在javascript中十秒后停止计时器?

  14. 14

    如何使用内部的clearInterval创建函数setInterval?

  15. 15

    每次单击如何停止(clearInterval)setInterval

  16. 16

    setInterval和clearInterval的Ember实现是什么

  17. 17

    完成所有动画后的clearInterval()和setInterval()

  18. 18

    JavaScript中的setInterval和clearInterval作为单线程语言

  19. 19

    在多个javascript对象中调用setInterval和clearInterval函数

  20. 20

    完成所有动画后的clearInterval()和setInterval()

  21. 21

    为什么我无法控制 setinterval 和 clearinterval javascript?

  22. 22

    如何正确使用 clearInterval()?

  23. 23

    clearInterval不清除setInterval

  24. 24

    setInterval / clearInterval问题

  25. 25

    如何使用setInterval和clearInterval在向右和向下移动后沿对角线向左移动文本(返回以开始)

  26. 26

    如何在jQuery中的函数外部调用clearInterval?在setInterval之外

  27. 27

    Javascript clearInterval()无法正常工作,如何停止setInterval()?

  28. 28

    如何在jQuery中的函数外部调用clearInterval?在setInterval之外

  29. 29

    可以使用setinterval直接调用clearinterval吗?

热门标签

归档