我遇到了一些问题。我有页面,并使自动刷新div(表)内容一切正常,我有从javascript过滤器的表,但刷新过滤器后。我尝试再次调用过滤器功能,但没有任何反应。
为什么不使用setInterval脚本再次使用filterJS()?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Main Page</title>
<script type="text/javascript" src="filter/tablefilter.js"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div class="refresh">
<table id="tab" class="my" >
<tr>
<th>World Regions</th>
<th>Population ( 2007 Est.)</th>
<th>Population % of World</th>
<th>Internet Usage, Latest Data</th>
<th>% Population ( Penetration )</th>
<th>Usage % of World</th>
<th>Usage Growth 2000-2007</th>
</tr>
<tr>
<td>Africa</td>
<td>933,448,292</td>
<td>14.2 %</td>
<td>32,765,700</td>
<td>3.5 %</td>
<td>3.0 %</td>
<td>625.8%</td>
</tr>
<tr>
<td>Asia</td>
<td>3,712,527,624</td>
<td>56.5 %</td>
<td>389,392,288</td>
<td>10.5 %</td>
<td>35.6 %</td>
<td>240.7 %</td>
</tr>
<tr>
<td>Europe</td>
<td>809,624,686</td>
<td>12.3 %</td>
<td>312,722,892</td>
<td>38.6 %</td>
<td>28.6 %</td>
<td>197.6 %</td>
</tr>
<tr>
<td>Middle East</td>
<td>193,452,727</td>
<td>2.9 %</td>
<td>19,382,400</td>
<td>10.0 %</td>
<td>1.8 %</td>
<td>490.1 %</td>
</tr>
</table>
</div>
<script language="javascript" type="text/javascript">
//<![CDATA[
function filterJS(){
var table2_Props = {
col_0: "select",
col_5: "none",
display_all_text: " [ Show all ] ",
sort_select: true
};
setFilterGrid( "tab",table2_Props );}
//]]>
filterJS();
$(document).ready(function(){
setInterval(function() {
filterJS();
$('.refresh').load(document.URL + ' .refresh');}, 2000);
});
</script>
</body>
</html>
答案 0 :(得分:2)
在表更新后调用它,使用load()提供的回调参数
setInterval(function() { $('#myTable').load(document.URL + ' #myTable', filterJS);}, 2000);
你真的应该考虑使用setTimeout而不是间隔,所以如果服务器需要一段时间来响应,那么调用就不会开始堆积。
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);
}
答案 1 :(得分:0)
将其设置为在回调中递归调用函数,并使用setTimeout
代替区间
function getTable() {
$('#myTable').load(document.URL + ' #myTable', function() {
setTimeout(function(){
getTable();
}, 2000)
});
}
答案 2 :(得分:0)
如果你试图延迟脚本以确保在加载表之后运行过滤器,它只会在你的网络运行缓慢之前工作......所以这样做很糟糕。代替:
$(document).ready(function(){
$('#myTable').load(document.URL + ' #myTable', function() {
filterJS();
});
});
这样您就可以使用一个回调函数,该函数将在加载完成后每次执行。
相应地添加递归。