Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery加载和设置超时问题_Jquery_Settimeout - Fatal编程技术网

jquery加载和设置超时问题

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

我正在使用.load()加载此页面,超时为500,但当文本区域处于焦点时,我希望将超时更改为5000000。此代码不起作用

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);
  });
}

你很接近,但你做错了两件事:

  • 每次函数运行时重置
    t
    。焦点处理程序将其设置为5000000,然后函数运行,第一行将其设置回500
  • 在较低范围内(焦点处理程序内)使用
    var
    down。这会导致在较低的范围内创建一个“新t”变量,与较高的范围分开
您可以将
t
向上移动一个级别,然后从较低的范围中删除
var
,它在我的测试中起作用:

var t = 500;
function refreshTable(){
    $('#postHolder').load('postFrame.php', function(){
         $("textarea").focusin(function() {
             t = 5000000;
         });
         setTimeout(refreshTable, t);
    });
}
这里有一个与
.load
方法相同的想法: