我正在嘗試使用setTimeout。我希望它每五秒執行一次,但不是在調用setTimeout時立即執行。我無法得到它的工作:setTimeout不執行第一次
firsttime = true;
window.setTimeout(function() {
if (!firsttime) {
window.location.reload();
}
firsttime = false;
}, 5 * 1000);
我正在嘗試使用setTimeout。我希望它每五秒執行一次,但不是在調用setTimeout時立即執行。我無法得到它的工作:setTimeout不執行第一次
firsttime = true;
window.setTimeout(function() {
if (!firsttime) {
window.location.reload();
}
firsttime = false;
}, 5 * 1000);
setTimeout
只運行一次。
setInterval
每X毫秒運行一次。
firsttime = true;
window.setInterval(function() {
if (!firsttime) {
window.location.reload();
}
firsttime = false;
}, 5 * 1000);
他在超時時間內調用'window.location.reload()','setInterval()'可能並不像預期的那樣工作...... –
@TomaszNurkiewicz:我認爲'reload'只是一個例子, *真的*這樣做。 –
您正在尋找setInterval。它採用相同的參數,但每X秒執行一次回調,而不是一次。
如果他正在重新加載頁面,'setInverval()'將不起作用。那麼,它只會每隔一次。 –
if (!firsttime) {
window.location.reload();
}
firsttime = false;
,因爲你叫暫停在5秒內這將只執行一次:
window.setTimeout(function() {
}, 5 * 1000);
當你希望它繼續執行每5秒;使用setInterval:
firsttime = true;
window.setInterval(function() {
if (!firsttime) {
window.location.reload();
}
firsttime = false;
}, 5 * 1000);
但是, 10秒的setTimeout就足夠了:
window.setTimeout(function() {
window.location.reload();
}, 10 * 1000);
因爲當頁面重新加載
一旦你window.location.reload()
您的網頁,所有的JavaScript變量和定時器都將丟失變量firsttime將重置爲true。當頁面第二次加載時,firsttime
再次是true
。
所以你要做的是:當用戶第一次進入頁面時,刷新10秒後。然後每5秒刷新一次。問題是:HTTP是statelss,每次用戶進入頁面時,它第一次是是。兩者之間沒有記憶或狀態。
你可以做的是:
使用cookie或HTTP會話記住用戶已經輸入的頁面。你第一次使用setTimeout()
10秒。在該頁面上的每個後續條目中,您使用5秒(setInterval()
在這裏不值錢)
進入first.html
後等待10秒鐘並重定向到second.html
。完全相同,但硬編碼5秒延遲。查詢參數或散列標籤也可以用來保持狀態。雖然有點哈克。
刷新整個頁面偶爾是如此2000年。考慮ajax和部分DOM更新。
setTimeout
只運行一次,在這一點上,條件(!firsttime)
不成立(如firsttime
是true
,所以什麼也不會發生。
可以把這個檢查。該功能將不負荷第一次執行將在指定的延遲之後執行。
如果您要重複執行,請檢查setInterval
。但是你應該認識到,window.location.reload();
重新加載整個頁面,包括其中的JavaScript,所以它只能被執行一次(然後重新加載頁面,間隔被清除,JS重新初始化,並與另一個超時實例)。
也許HTML刷新會在你的情況更爲有用:
<meta http-equiv="refresh" content="5;url=yourwebpage">
你真的意味着「我***不***希望它的工作」? –
您的代碼總計首次設置爲false; – j08691
你認真*想每5秒鐘重新加載一次頁面嗎?如果是這樣,我建議AJAX。 –