2011-08-13 48 views
1

現在我有jQuery中的間隔功能重新加載頁面每隔幾秒鐘:的setInterval重新加載PHP頁面,除非「編輯」按鈕被點擊

setInterval(function() { 
$('div#tab2').load('morefour.php?doc=' + encodeURIComponent(ktitle)); 
}, 3000); 
}); 

我真的想現在要做的是,如果該輸入點擊:

<input type='image' class='edit' src='edit.png'> 

停止setinterval函數。

+1

我認爲你的代碼有問題。 –

+1

尾隨'});'似乎不合適。 –

回答

5

setInterval返回一個句柄,您可以使用它與clearInterval取消它。句柄將是一個大於零的數字。

於是從setInterval調用保存的手柄:

var handle = setInterval(function() { 
    $('div#tab2').load('morefour.php?doc=' + encodeURIComponent(ktitle)); 
}, 3000); 

...然後用它來取消它,如果按下按鈕:

$("input.edit").click(function() { 
    if (handle) { 
     clearInterval(handle); 
     handle = 0; 
    } 
}); 

在第一個片段還要注意以上,我已經將間隔參數(3000)移到了它應該在的位置(正如Jared指出的那樣,您將它作爲load的第二個參數,當然它應該是setInterval的第二個參數)。

+0

你沒有看到關於'setInterval()'代碼的異常情況? –

+0

@Jared:啊,是的,我明白你的意思了。 –

+0

@Jared:固定:) – Jonah

1

您可以使用window.clearInterval(),如here

+0

通常認爲最好的做法是將代碼包含在答案中,而不是鏈接到其他地方。不知道其他網站會持續多久,所以這個答案的效用可能最終變得毫無用處。 :) –

+0

好的,我會爲我未來的帖子做。我是新來的:) – Cydonia7

0

您可以通過使用一個標誌,做到這一點:

<script type="text/javascript"> 
    var flag = true; 
</script> 

,改變setInterval聲明是這樣的:

setInterval(function() { 
    if (flag) { 
     $('div#tab2').load('morefour.php?doc=' + encodeURIComponent(ktitle)); 
    } 
}, 3000); 

,改變標誌圖像onclick

<input type='image' class='edit' src='edit.png' onclick="javascript:flag=false"> 
相關問題