jquery加载和设置超时问题
我正在使用.load()加载此页面,超时为500,但当文本区域处于焦点时,我希望将超时更改为5000000。此代码不起作用jquery加载和设置超时问题,jquery,settimeout,Jquery,Settimeout,我正在使用.load()加载此页面,超时为500,但当文本区域处于焦点时,我希望将超时更改为5000000。此代码不起作用 function refreshTable(){ var t = 500; $('#postHolder').load('postFrame.php', function(){ $("textarea").focusin(function() { var t = 5000000; }); setTi
function refreshTable(){
var t = 500;
$('#postHolder').load('postFrame.php', function(){
$("textarea").focusin(function() {
var t = 5000000;
});
setTimeout(refreshTable, t);
});
}
无法通过更改用于指定超时开始时间的变量来更改超时。您需要停止超时,并根据需要的时间启动一个新的超时:
function loadPost(){
$('#postHolder').load('postFrame.php', function(){
$("textarea").focusin(function() {
clearTimeout(timer);
timer = setTimeout(refreshTable, 5000000);
});
var timer = setTimeout(refreshTable, 500);
});
}
你很接近,但你做错了两件事:
- 每次函数运行时重置
。焦点处理程序将其设置为5000000,然后函数运行,第一行将其设置回500t
- 在较低范围内(焦点处理程序内)使用
down。这会导致在较低的范围内创建一个“新t”变量,与较高的范围分开var
t
向上移动一个级别,然后从较低的范围中删除var
,它在我的测试中起作用:
var t = 500;
function refreshTable(){
$('#postHolder').load('postFrame.php', function(){
$("textarea").focusin(function() {
t = 5000000;
});
setTimeout(refreshTable, t);
});
}
这里有一个与.load
方法相同的想法: