间隔后的Changer SetInterval值

时间:2015-12-28 06:25:36

标签: javascript intervals

如果我可以尝试让每个人都明白我在寻找什么,我正在寻找改变间隔的价值,让我们说" 5000ms"在" 1000ms"然后它将继续下一个值,如" 2000ms"并重复一遍!我当前的代码几乎就是一个秒表,它每1000毫秒将一个段号添加到一个段落中。非常感谢任何帮助!



<script>
function myFunction() {
    clicks += 1;
}
setInterval(myFunction, 1000);
     var clicks = 0;
    function myFunction() {

        clicks += 1;
        document.getElementById("demo").innerHTML = clicks; 
// connects to paragraph id
    }
</script>
<p id="demo"></p>
<!--connects to getElementById-->
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:0)

不要使用setInterval - 此功能将在您设置的任何给定时间间隔内执行操作。

请改用setTimeout。在给定间隔后仅执行一次操作,然后使用不同的间隔值一次又一次地调用它。

答案 1 :(得分:0)

这个怎么样

nginx

答案 2 :(得分:0)

你应该尝试使用递归超时而不是间隔

var timeout = 1000;

var timer;

function startTimer() {
  clearTimeout(timer);
  timer = setTimeout(function() {
    console.log('tick');
    startTimer();
  }, timeout);
}
startTimer();

// timeout = 2000
// timeout = 500
// clearTimeout(timer); to cancel
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>

答案 3 :(得分:0)

这可能看起来有点复杂,但您可以尝试这样的事情:

JSFiddle

&#13;
&#13;
(function() {
  var interval = null;
  var limit = 5;

  function initInterval(callback, index) {
    var msToSec = 1000;
    if (interval) {
      clearInterval();
    }
    console.log("Delay: ", index)
    interval = setInterval(callback, index * msToSec);
  }

  function clearInterval() {
    window.clearInterval(interval);
    interval = null;
  }

  function resetInterval(callback, count) {
    clearInterval();
    initInterval(callback, count);
  }

  function main() {
    var count = 1;

    var notify = function() {
      console.log("Hello World: ", count);
      var _nextCount = ((count++) % limit) + 1;
      if (count < 10) {
        resetInterval(notify, _nextCount);
      } else {
        console.log("Stoping loop...");
        clearInterval();
      }

    }

    initInterval(notify, count);
  }

  main()
})()
&#13;
&#13;
&#13;