2013-11-04 71 views
0

我想創建,如果我點擊一個DIV1其中一個javascript函數,我需要load_data1()函數來刷新每5秒。如果用戶點擊div2或div3,我需要load_data1()函數來停止。作爲下面的代碼,當我點擊div1時,load_data1()函數在5秒後運行並停止,之後它不會運行,有什麼想法可能會在這裏丟失?你怎麼跑每5秒在JavaScript

$(document).ready(function(){ 

$.ajaxSetup({ cache: false }); 
    var timeout; 
    function timeout_init() { 
     timeout=setTimeout('load_data1()', 5000); 
     return timeout; 
    } 



    $("#div1").click(function() { 
     timeout_init(); 
     }); 

    $("#div2").click(function() { 
      clearTimeout(timeout); 
      load_data2(); 
    }); 

    $("#div3").click(function() { 
      clearTimeout(timeout); 
      load_data3(); 
    }); 

}); 
+1

查看差異b/w setInterval和setTimeout。也請避免使用這些字符串表達式,而是使用函數引用。 – PSL

+0

爲了將來的參考,爲了善良,請*谷歌第一。一個簡單的搜索,「如何在JavaScript中每5秒運行一次函數」將解決您的問題。 –

+0

如果你只是簡單地搜索你的標題,你的答案應該是在第一個結果... – Sumurai8

回答

2

要使用setInterval(),而不是setTimeout只觸發了一次,setInterval將繼續射擊,直到你清楚它

+0

我遵循你的推薦,它正在工作,但我確實有一個問題。如果setInterval值是60000ms,當我點擊一個標籤時,它會等待60000ms來加載頁面。當點擊標籤時,我真的需要加載頁面,然後每隔60000ms刷新一次。任何想法我會如何做到這一點? – user1471980

+0

只需在setInterval之前調用你的函數。從你的例子中,在timeout_init函數中,你可以做 load_data2(); setInterval(load_data2,6000); –

2

你可以嘗試這樣的事情:

window.setInterval(function(){ 
    /// call your function here 
}, 5000); 

這是一個匿名函數每5秒運行一次。