我的代码有问题我将2个表加载到两个div中,如下所示:
loadTable($("#vbeTable"),'getUpdateA')
loadTable($("#vbcTable"),'getUpdateB')
我也有:
$("#vbeTable, #vbcTable").live('mouseover mouseout', function(event) {
if (event.type == 'mouseover') {
// console.log('hovering over',$(this));
$(this).attr('update',false)
} else {
// console.log('NOT hovering over',$(this));
$(this).attr('update',true)
}
})
和loadTable函数是这样的:
function loadTable($table, $php, $noRefresh){
if($table.attr('update') == 'false'){
console.log('not updating', $table, $table.attr('update'))
setTimeout( function () { loadTable($table, $php); }, 1000)
}
$table.load($php+'.php',function(response, status, xhr) {
if (status == "success") {
if(!$noRefresh){
console.log('acquired table')
setTimeout( function () { loadTable($table, $php); }, 1000)
}
}
else {
console.log('error aquiring lock on', $table.attr('id'), response, status, xhr)
}
});
}
*由于某种原因,setTimeout函数没有等待适当的时间,而在控制台中我得到:
(96)liveLoads.js:35获取表
(7711)liveLoads.js:29不更新[<div id="vbcTable" update="true">…</div>
] false
(2)<exception> <exception> <exception> <exception>
* 或者,vbe和vbc都是空div。
能帮助我帮助我吗?
*的 更新 *
我也有这段代码:
function expand(EntID) {
console.log('expand',EntID)
$.ajax({
url: "showRows.php?ID=" + EntID
});
}
当点击表格中的某个内容时,它会调用此函数。
然后其他函数setTimeouts进入了一个tizzy并连续调用了一百万次而没有注意时间
答案 0 :(得分:3)
您正在调用超时回调函数,而不是将其传递给超时。
而不是:
// this will call loadTable right away and setTimeout will trigger the returned value in a sec.
setTimeout( loadTable($table, $php), 1000)
执行:
// setTimeout will trigger the anon. function in a sec
setTimeout( function () { loadTable($table, $php); }, 1000)
您还在loadTable中调用相同的函数loadTable。而且我在这无尽的循环中没有看到休息。
答案 1 :(得分:0)
这部分看起来不对:
if (status == "success") {
if(!$noRefresh){
console.log('acquired table')
setTimeout( loadTable($table, $php), 1000)
}
}
除了事实上这没有将正确的类型传递给setTimeout(param1必须是一个函数,你给它返回函数调用loadTable的结果) - 我认为你不希望它调用loadTable无论如何。而是调用一个解析数据并填充html元素的函数!所以:
if (status == "success") {
if(!$noRefresh){
console.log('acquired table')
setTimeout(function () {drawMyTableWithThisData(someTable, data);}, 1000);
}
}