JavaScript只能工作一次
我面临一些问题。我有页面和自动刷新div(table)内容,一切正常,我有来自javascript的带有过滤器的表,但刷新后过滤器消失了。我尝试再次调用过滤器功能,但什么也没发生 为什么不使用setInterval脚本再次使用filterJS()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%
主页
世界区域
人口(美国东部时间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();
});
});