我试图每隔20秒用JavaScript刷新一个div。这是我的代码:
$(document).ready(function(){
refreshTable();
updateTable();
});
function updateTable(){
setTimeout( refreshTable, 20000);
updateTable();
}
function refreshTable(){
$('#table_list').load('table')
}
页面准备好后,我就可以开始倒计时了。但是这段代码每隔3秒更新一次表。有人能帮我吗?我做错了什么?
P.s。:我看到这是一个常见问题,但我看到的任何问题都能帮助我。
答案 0 :(得分:2)
你有无限的递归:
function updateTable(){
setTimeout( refreshTable, 20000);
updateTable(); // Infinite recursion.
}
你应该使用setIinterval而不是使你的setTimeout循环。
答案 1 :(得分:2)
文档准备就绪后,请致电updateTable
。
20秒后,它会调用refreshTable
但立即再次调用updateTable
。因此,它会排队另一个refreshTable
,然后再次点击updateTable
。这使它成为一个无限循环...或至少进入堆栈溢出。
您需要:
updateTable
内拨打refreshTable
,而不是updateTable
setInterval
处理程序中使用ready
,而不是使用setTimeout
答案 2 :(得分:1)
正如其他答案所指出的,您在updateTable函数中有无限递归。您可以使用setInterval,它定期运行指定的refreshTable函数:
$(document).ready(function(){
refreshTable();
setInterval(refreshTable, 2000)
});
function refreshTable(){
$('#table_list').load('table')
}
答案 3 :(得分:0)
$(document).ready(function(){
window.setInterval( function(){
$('#table_list').load('table');
}, 20000);
});
这可能会帮助你,至少我希望如此:D
答案 4 :(得分:0)
我建议你使用"完成"回调jQuery方法" .load()"
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#table_list').load('table', function(){
setTimeout( refreshTable, 20000);
});
}
因此,在执行查询处理和HTML插入之后将执行setTimeout。请注意,我们不需要" updateTable"辅助功能,我们现在称之为" refreshTable"函数递归。