Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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只能工作一次_Javascript_Jquery_Html - Fatal编程技术网

JavaScript只能工作一次

JavaScript只能工作一次,javascript,jquery,html,Javascript,Jquery,Html,我面临一些问题。我有页面和自动刷新div(table)内容,一切正常,我有来自javascript的带有过滤器的表,但刷新后过滤器消失了。我尝试再次调用过滤器功能,但什么也没发生 为什么不使用setInterval脚本再次使用filterJS() 主页 世界区域 人口(美国东部时间2007年) 人口占世界的% 互联网使用情况、最新数据 %人口(渗透率) 全球使用率% 2000-2007年使用量增长 非洲 933,448,292 14.2% 32,765,700 3.5% 3% 625.8%

我面临一些问题。我有页面和自动刷新div(table)内容,一切正常,我有来自javascript的带有过滤器的表,但刷新后过滤器消失了。我尝试再次调用过滤器功能,但什么也没发生

为什么不使用setInterval脚本再次使用filterJS()


主页
世界区域
人口(美国东部时间2007年)
人口占世界的%
互联网使用情况、最新数据
%人口(渗透率)
全球使用率%
2000-2007年使用量增长
非洲
933,448,292
14.2%
32,765,700
3.5%
3%
625.8%
亚洲
3,712,527,624
56.5%
389,392,288
10.5%
35.6%
240.7%
欧洲
809,624,686
12.3%
312,722,892
38.6%
28.6%
197.6%
中东
193,452,727
2.9%
19,382,400
10%
1.8%
490.1%
//
filterJS();
$(文档).ready(函数(){
setInterval(函数(){
filterJS();
$('.refresh').load(document.URL+'.refresh');},2000年);
});

更新表后调用它,使用load()提供的回调参数

您确实应该考虑使用setTimeout而不是interval,这样,如果服务器需要一段时间来响应,调用就不会堆积起来

function filterJS() {
    var table2_Props = {
        col_0: "select",
        col_1: "select",
        col_3: "none",
        display_all_text: " [ All ] ",
        sort_select: true
    };
    setFilterGrid("myTable", table2_Props);
    window.setTimeout(reloadData, 2000);
};

function reloadData() {
    $('#myTable').load(document.URL + ' #myTable', filterJS);
}

将其设置为在回调中递归调用函数,并使用
setTimeout
而不是interval

function getTable() {
  $('#myTable').load(document.URL + ' #myTable', function() {
    setTimeout(function(){
      getTable();
    }, 2000)
  });
}

如果您试图延迟脚本以确保在加载表后运行筛选器,那么它将只在网络变慢之前工作。。。这样做很糟糕。相反:

$(document).ready(function(){
      $('#myTable').load(document.URL +  ' #myTable', function() {
          filterJS();
      });
});
通过这种方式,您可以使用回调函数,该函数将在每次加载完成后执行


相应地添加递归。

因为您是在Ajax调用返回数据之前调用函数……是的,如果页面开始,但在setInterval div内容更改之后,它可以正常工作,但是filter not仍然不起作用我编辑了我的代码并上传了相关内容。更新表时,您更新的代码仍然不会调用filter函数…我尝试放置filterJS();在.load之后仍然没有任何内容:(看到您键入
filterJS();
让我觉得您做得不对。显示您尝试过的代码。$(文档).ready(函数(){setInterval(函数(){$('.refresh').load(document.URL+'.refresh',filterJS);//1 try filterJS();//2 try});显示它工作正常。尝试执行一些控制台日志以找出错误所在。请记住,
load
将替换HTML,而不是附加到它。可能它可以使用gettable()函数,但过滤器只显示一次,然后消失。
$(document).ready(function(){
      $('#myTable').load(document.URL +  ' #myTable', function() {
          filterJS();
      });
});