Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用setInterval时无法将事件添加到DataTable分页按钮中_Javascript_Jquery_Datatable - Fatal编程技术网

Javascript 使用setInterval时无法将事件添加到DataTable分页按钮中

Javascript 使用setInterval时无法将事件添加到DataTable分页按钮中,javascript,jquery,datatable,Javascript,Jquery,Datatable,我正在处理一个记录所有操作的表,并根据给定的时间间隔刷新该表。 除了使用setInterval外,所有操作都正常,以下是我的代码: var interval = 3000; var interval_en = true; $(document).ready(function() { $('#logs_tbl').DataTable(); $('.paginate_button,.paginate_button.current').click(function(){

我正在处理一个记录所有操作的表,并根据给定的时间间隔刷新该表。 除了使用
setInterval
外,所有操作都正常,以下是我的代码:

  var interval = 3000;
  var interval_en = true;

  $(document).ready(function() {
    $('#logs_tbl').DataTable();
    $('.paginate_button,.paginate_button.current').click(function(){
        e.preventDefault();
        console.log("paginate click");
        interval_en = false;
    }).change(function(e){
        e.preventDefault();
        console.log("paginate click");
        interval_en = false;
    });
    var aclogs_interval = setInterval(function () {
        if(interval_en){
            console.log("logging=true");
            aclog_refresh(); //This function refreshes the table via Ajax
        }else{
            console.log("logging stopped");
            clearInterval(aclogs_interval);
        }
    }, interval);
} );
到目前为止,我尝试了什么:

不同的选择器:

每间隔绑定:

通过手动触发
interval\u en=false将停止该操作。仍然无法找出哪里出了问题


在第一个间隔出现之前,也可以单击分页按钮。

您可以尝试以下操作:

    $('#logs_tbl').on( 'page.dt', function () {
        console.log("paginate click");
        $('.btn-live,.btn-notlive').prop('class','btn-notlive');
        interval_en = false;
    } );

此示例是按站点引用的。

您的第一个代码段不起作用,因为
e
未定义。假设这只是一个复制/粘贴错误,我认为代码应该可以工作。我会查看datatable库本身,看看是否有更好的方法“钩住”它们的事件,因为任何具有轮询间隔的解决方案都不如基于事件的方法。为此,我不知道
page.dt
,应该正确准备文档。
   var aclogs_interval = setInterval(function (e) {
        if(interval_en){
            console.log("logging=true");
            aclog_refresh();
            $('.paginate_button,.paginate_button.current').click(function(){
                e.preventDefault();
                console.log("paginate click");
                interval_en = false;
            }).change(function(e){
                e.preventDefault();
                console.log("paginate click");
                interval_en = false;
            });
        }else{
            console.log("logging stopped");
            clearInterval(aclogs_interval);
        }
    }, interval);
    $('#logs_tbl').on( 'page.dt', function () {
        console.log("paginate click");
        $('.btn-live,.btn-notlive').prop('class','btn-notlive');
        interval_en = false;
    } );