2014-04-25 84 views
0

我使用.load()加载此页面,超时时间为500,但是当textarea被聚焦时,我想超时更改为5000000.此代码不起作用。jquery加载和setTimeout问题

function refreshTable(){ 
    var t = 500; 
    $('#postHolder').load('postFrame.php', function(){ 
    $("textarea").focusin(function() { 
     var t = 5000000; 
      }); 
    setTimeout(refreshTable, t); 
    }); 
} 

回答

1

您不能通过更改用于指定超时开始时间的变量来更改超时。你需要停止超时,并开始用的时候,你想一个新问题:

function loadPost(){ 
    $('#postHolder').load('postFrame.php', function(){ 
    $("textarea").focusin(function() { 
     clearTimeout(timer); 
     timer = setTimeout(refreshTable, 5000000); 
    }); 
    var timer = setTimeout(refreshTable, 500); 
    }); 
} 
0

你靠近,但你做错了两两件事:

  • 重置每次t您函数运行。您的焦点处理程序将其设置为5000000,然后该函数运行,并且第一行将其设置回500.
  • 在较低范围内(焦点处理程序内)使用var。这会导致“新T”变量获得在较低的范围内创建,从不同的上级了一个

你可以只移动t升了一级,而从下范围中删除var,并且它的工作原理我的测试:

var t = 500; 
function refreshTable(){ 
    $('#postHolder').load('postFrame.php', function(){ 
     $("textarea").focusin(function() { 
      t = 5000000; 
     }); 
     setTimeout(refreshTable, t); 
    }); 
} 

下面是与取出.load方法的小提琴,应该是同样的想法:http://jsfiddle.net/8yx6P/