我有一个带有两个按钮的 HTML 页面,当我单击开始按钮时,我想使用 setInterval 多次评估该函数。这工作得很好,但我无法清除间隔。我做错了什么?
function intFunc (func, time) {
interval = setInterval(func, time);
}
$("#startButton").on("click", intFunc(function () {
$.post('link/to/php.php', function(data) {
//do something with data
});
}, 1000));
$("#stopButton").on("click", function () {
clearInterval(interval);
});
最佳答案
首先,正如评论所建议的,您应该在上面声明 interval
以确保范围清晰。
其次,你有一个语法问题。您立即调用 intFunc
,并将结果传递给 $("#startButton").on()
。这不是你想要的。您应该作为第二个参数传递的是回调函数。您可以像这样重新组织代码:
第三,在自调用匿名函数中声明将防止全局范围的污染。
(function() {
var interval;
$("#startButton").on("click", function(){
interval = setInterval(function () {
$.post('link/to/php.php', function(data) {
//do something with data
});
}, 1000);
});
$("#stopButton").on("click", function () {
clearInterval(interval);
});
})();
关于javascript - clearInterval() 在按钮单击时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780124/