javascript - 每 x 秒调用一个 Javascript 函数并在 y 秒后停止?

标签 javascript loops settimeout setinterval

我想在单击按钮后调用一个 Javascript 函数,使其每 100 毫秒循环一次,持续 1.5 秒,然后暂停。

我的想法是,我想让这个 Accordion slider 能够使用这个自定义 jQuery 滚动条显示可滚动的内容(我不知道任何其他更好的自定义跨浏览器滚动条)。

每次用户单击其中一项时,都必须使用此函数重建滚动条,使用:

$(".ac-big").customScrollbar("resize")

为了使转换运行顺利,我使用了 setInterval,如下例所示:

<script type="text/javascript">
$(window).load(function () {
$(function(){
    setInterval(function(){
    $(".ac-big").customScrollbar("resize")
},100);
});
</script>

问题是脚本非常耗费资源。没有必要每 100 毫秒运行一次。我想让它在用户单击一个单选按钮后每 100 毫秒运行一次,持续 1.5 秒。

另一个问题来了。由于 Accordion slider 是使用单选按钮构建的,如何在单选按钮点击时调用 javascript 函数?

我已将 setTimeout 和 setInterval 插入到标记中,因为我相信我必须结合使用这两个。如果我拥有所有必要的构建 block ,我就不会在这里浪费您的时间。

最佳答案

鉴于此:

I want to call a Javascript function after clicking a button, make it loop every 100 milliseconds for 1,5 seconds and then pause it.

应该这样做:http://jsfiddle.net/pUWHm/

// I want to call a Javascript function after clicking a button
$('.button').click(function() {
  var started = Date.now();

  // make it loop every 100 milliseconds
  var interval = setInterval(function(){

    // for 1.5 seconds
    if (Date.now() - started > 1500) {

      // and then pause it
      clearInterval(interval);

    } else {

      // the thing to do every 100ms
      $(".ac-big").customScrollbar("resize")

    }
  }, 100); // every 100 milliseconds
});

该策略是在您单击按钮时开始间隔,并保存该间隔 ID。您还可以在开始时保存。每次间隔运行时,您都会检查它是否足够长。如果还不到时候,就去做吧。如果到了时间,请清除间隔,这样它就不会再次触发。

关于javascript - 每 x 秒调用一个 Javascript 函数并在 y 秒后停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432169/

相关文章:

javascript - setTimeout 现在执行并给定时间

javascript - 匹配行尾 javascript 正则表达式

javascript - 乘法给出近似结果

Javascript - 如何读取文件

javascript - 如何更有效地做到这一点?

javascript - 如何确保包含多个 $.ajax 调用的函数完全同步运行,并允许浏览器在执行时重新绘制

javascript - jQuery Click 事件不循环。它只在第一次点火时起作用

c++ - 如何使用 C++11 的基于范围的 for 循环来输出表中的数据?

javascript - 循环遍历表并使用 jquery 删除重复项

javascript - 如何为 Full CSS Dropdown Vertical Menu 添加隐藏延迟