1

我的代码有什么问题,当我只想在点击时调用一个函数,然后每 5 秒再次重复一次?

$("#ref").on("click", ".mc", function(event) {
   var ref_id = $(this).attr('ref_id');
      return getRef(ref_id);
      window.setInterval(function(ref_id){
       getRef(ref_id);
      }, 5000);
});

以及如何在二次点击时删除 setInterval?

感谢您的任何提示!

4

2 回答 2

1

函数中的所有内容都return getRef(ref_id);将被忽略。

您可能应该删除return关键字。

于 2013-04-20T12:24:38.197 回答
1

我的代码有什么问题

您的代码永远不会到达对 的调用setInterval,因为您的

return getRef(ref_id);

行结束函数。

如何在二次点击时删除 setInterval?

通过记住你是否有一个跑步。setInterval返回一个“计时器句柄”,它是一个 not 的数字,0您可以使用它来关闭它。因此,您可以使用初始化为 的变量0来记住您是否正在运行计时器(并记住句柄以便您可以将其关闭):

(function() {
    // A handle for setInterval, 0 = not set
    var timer = 0;

    $("#ref").on("click", ".mc", function(event) {
       if (timer) {
          // Timer is set, cancel it
          clearInterval(timer);
          timer = 0;
       }
       else {
          // Timer is not set, set it
          var ref_id = $(this).attr('ref_id');
          // No `return` on the next line, it ends the function
          getRef(ref_id);
          timer = window.setInterval(function(ref_id){
             getRef(ref_id);
          }, 5000);
       }

       // If you need to return something from the click (for instance,
       // `false`), do so here
    });
})();

getRef在上面我假设你在停止计时器时根本不想打电话。

于 2013-04-20T12:27:59.677 回答