jQuery clearinterval / stopinterval不起作用

时间:2016-02-15 15:05:00

标签: javascript jquery ajax setinterval clearinterval

我有一个autorefresh函数,如果选中了复选框并单击了一个按钮,则会调用该函数。我想在取消选中复选框时停止自动刷新:

var refreshId = null; 

$("#disINFRAlive").click(function(infralivefun) {
    event.preventDefault(infralivefun);

    var category_id = {};
    category_id['datumanf'] = $("#datumanf").datepicker().val();
    category_id['datumend'] = $("#datumend").datepicker().val();

    $.ajax({ //create an ajax request to display.php
        type: "POST",
        url: "infratestomc.php?id=" + Math.random(),
        dataType: "html",      
        data: category_id,
        success: function(response) {
            $("#resulttabelle").show().html(response);
        }
    });

    if ($('#autorefcheck').is(':checked')) {
        var refreshId = setInterval(function() {
            var category_id = {};
            category_id['datumanf'] = $("#datumanf").datepicker().val();
            category_id['datumend'] = $("#datumend").datepicker().val();

            $.ajax({ //create an ajax request to display.php
                type: "POST",
                url: "infratestomc.php?id=" + Math.random(), 
                dataType: "html",
                data: category_id,
                success: function(response) {
                    $("#resulttabelle").show().html(response);
                }
            });
        }, 5000);
    }
});

如果选中#autorefcheck复选框并单击按钮#disinFRAlive,则autorefresh有效。但是,我无法通过取消选中复选框来停止:

function stopinterval(){
  clearInterval(refreshId); 
  return false;
}

$('#autorefcheck').click(function() {
    stopinterval();
});

我试图以各种方式使用clearInterval,到目前为止还没有工作。

1 个答案:

答案 0 :(得分:3)

var的初始化中删除refreshId关键字。

if ($('#autorefcheck').is(':checked')) {
    refreshId = setInterval(function() {

您拥有它的方式,您将在不同的范围内重新声明该变量。这样,您无法从stopInterval()访问它。