2014-04-25 81 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/