下面的腳本應該做到以下幾點:奇怪的setTimeout行爲的Javascript
在頁面加載時,將設置爲20秒,然後將所需的內容會自動調用Ajax更新超時。 如果用戶單擊一個說RELOAD的按鈕,它將調用函數reloadContent()
,從而清除超時並再次設置一個。
因此,基本上,如果用戶手動重新加載,它將重新啓動超時,以避免過於接近呼叫。
它工作的一半,因爲計時器似乎被重置,但reloadContentTimeout()
將在手動加載的操作10秒後執行,這是超時時間的一半。
我做錯了什麼?
謝謝!
/**
* Reload content
*/
function reloadContent(elementId) {
$(elementId).load(window.location.href+' '+elementId+' > *');
clearTimeout(timeoutId);
reloadContentTimeout(false);
}
/**
* Reload content every X seconds (20)
*/
var timeoutId;
function reloadContentTimeout(now)
{
now = (typeof now === 'undefined' ? true : now);
if(now) {
reloadContent('#table-content');
}
timeoutId = setTimeout(reloadContentTimeout, 1000 * 20);
}
reloadContentTimeout(false);
事實上,我已經完成了console.log,看到它正在創建2個超時,並且只清除了最後一個。把'else'解決了。 Thansk! – JorgeeFG