我的代码有什么问题,我想要的只是在点击时调用一个函数然后再每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?
感谢任何提示!
答案 0 :(得分:1)
忽略函数return getRef(ref_id);
之后的所有内容。
您可能应该删除return
关键字。
答案 1 :(得分:1)
我的代码有什么问题
您的代码永远不会接到setInterval
的来电,因为您的
return getRef(ref_id);
行结束了该功能。
如何在辅助点击中删除setInterval?
记住你是否有一个正在运行。 setInterval
会返回一个“计时器句柄”,这是一个非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
。