javascript - clearInterval() 在按钮单击时不起作用

标签 javascript jquery setinterval clearinterval

我有一个带有两个按钮的 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/

相关文章:

javascript - 如何使用 Javascript 检索 <video> 元素的长度(以秒为单位)?

javascript - 尝试在 javascript 中应用 CSS 转换

javascript - 将两个不同的参数传递给函数

javascript - 强制背景图像重新加载

使用 setInterval 的 javascript 自动刷新不起作用

javascript - 覆盖 Vue.js 中的 mixins 函数

jquery - 带有 float 元素的 slideToggle

javascript - setInterval 一次后停止

node.js - 如何测试方法上的 setInterval?

php - 跨浏览器异步 uploader ?