2015-10-20 49 views
1
var delay=[1000,5000,2000,1000,1500] // (in milliseconds) 
window.ChatTimer = $.timer(updateTimer, delay, true).once(); 
function updateTimer() { 
// Do something 
} 

我想這個jQuery計時器每次都採取不同的延遲,但它是在每次執行時..... 採取相同的延遲,我使用jQuery的腳本文件。 U可以找到它下面 https://github.com/jchavannes/jquery-timer/blob/master/jquery.timer.jsjQuery的計時器延遲輸入作爲一個數組

+0

'延遲!==延遲' – Andreas

+0

輸入錯誤...考慮它相同的 –

+0

你正在使用的所有插件。你能否更新你的問題,並把鏈接到這些插件。 – vijayP

回答

0
var delays=[1000,5000,2000,1000,1500] // (in milliseconds) 
var delay = delays[Math.floor(Math.random() * delays.length)]; 

window.ChatTimer = $.timer(updateTimer, delay, true).once(); 
function updateTimer() { 
    // Do something 
} 

林不知道究竟你想實現 - 它每次都會挑隨機延遲,如果你需要它以某種方式排列,代碼將是不同的,但你沒有提供足夠的信息。

[編輯] 如果我理解正確,這是你想要的東西:定時器的每一跳之後,你要經過時間的下一個值要執行從延遲陣列旁邊打勾:

var delays=[1000,5000,2000,1000,1500]; // (in milliseconds) 
var i=0; 

window.ChatTimer = $.timer(updateTimer, delays[i++], true); 
function updateTimer() { 
    // Do something 
    if (i >= delays.length) { 
    i = 0; 
    } 
    window.ChatTimer.set({time: delays[i++]}); 
} 
+0

我wnt這個功能來挑選延遲,如數組中給出的順序 –

+0

更新計時器功能應分別在1000,5000,2000毫秒後調用 –

+0

謝謝!它爲我工作 –

0

您可以使用Math.floor()和Math.random()函數決定特定數組的下標。並且在生成下標後,您可以獲得與數組中特定下標關聯的值。

Suppose you want to return a random number between 1 and 10: 
index = Math.floor((Math.random() * 10)); 

如果有10元的陣列,那麼你可以使用上面的函數返回值作爲索引從數組元素得到。 例子 - arr_name [指數]

所以你看下面的例子

var delays=[1000,5000,2000,1000,1500] // (in milliseconds) 
//get random index for delays array and after that get element that associated to that index. 
index = delays[Math.floor(Math.random() * delays.length)]; 
window.ChatTimer = $.timer(updateTimer, index, true).once(); 
function updateTimer() { 
// Do something 
} 

這裏delays.length - 指示延遲陣列存在元素的數量。