setInterval(function(),time) 在运行时更改时间

新手上路,请多包涵

我想在我的代码运行时更改 setInterval 函数时间。

我试试这个

<script type="text/javascript">
        $(function () {
            var timer;
            function come() { alert("here"); }
            timer = setInterval(come, 0);
            clearInterval(timer);
            timer = setInterval(come, 10000);
        });
    </script>

首先 SetInterval 不起作用!

原文由 altandogan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 784
2 个回答

您正在清除下一行的间隔,因此第一个不会起作用,因为它会立即被清除:

         timer = setInterval(come, 0);
        clearInterval(timer);
        timer = setInterval(come, 10000);

此外,正如 gdoron 所说,设置一个没有任何间隔的时间间隔并不是真正有效的,也不是一个真正的好主意,请改用 setTimeout ,或者如果不需要延迟则直接运行该函数。

         come();
        clearInterval(timer);
        timer = setInterval(come, 10000);

原文由 adeneo 发布,翻译遵循 CC BY-SA 3.0 许可协议

你不能。您将需要使用 setTimeout,并重复调用它:

 var timer; // current timeout id to clear
function come(){ /* do something */};
var time; // dynamic interval

(function repeat() {
    come();
    timer = setTimeout(repeat, time);
})();

有了这个,您可以设置一个不同的“间隔”,以便在每次执行函数 repeat 时应用。然而,如果在超时期间更改 time 则没有任何变化,您需要为此停止超时。

原文由 Bergi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题