2015-06-22 329 views
1

我正在尋找一種方法來改變我的javascript數字計數器的工作方式。現在它每秒都會計數,但我希望它在1秒到15秒之間的隨機時間內進行計數。將間隔時間更改爲隨機?

function startCount(){ 
    timer = setInterval (count, 1000); 
} 

function count(){ 
    var el = document.getElementById('counter'); 
    var currentNumber = parseFloat(removeCommas(el.innerHTML)); 
    el.innerHTML = addCommas(currentNumber+1); 
} 

function addCommas(nStr){ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 

    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 

    return x1 + x2 + '.00'; 
} 

function removeCommas(aNum){ 
    //remove any commas 
    aNum=aNum.replace(/,/g,""); 

    //remove any spaces 
    aNum=aNum.replace(/\s/g,""); 

    return aNum; 
} 

有人可以幫助我將計數時間更改爲隨機數嗎?

+2

你想要一個隨機但固定的時間間隔,還是應該每個新的超時時間都是隨機的? –

回答

1

假設間隔在1到15秒之間,並在每個間隔後更改。 setIntervsal()不適合。 setTimeout()在這裏是一個不錯的選擇,因爲等待的時間間隔。每隔下一個時間間隔都會有新的時間等待,並且必須再次調用。隨機等待時間通過Math.random()實現,該函數返回0到1之間的浮點數。使用因子並強制爲整數並填充1000毫秒,我們得到所需的間隔。

(A字前一種方案:首先,我以爲只是一個固定的隨機時間間隔將滿足,但問題ariesed,要求什麼樣的區間)。

function startCount() { 
    setTimeout(count, 1000 + Math.random() * 14000 | 0); 
} 
function count() { 
    var el = document.getElementById('counter'); 
    var currentNumber = parseFloat(removeCommas(el.innerHTML)); 
    el.innerHTML = addCommas(currentNumber + 1); 
    startCount(); 
} 
+0

我確定OP(和其他讀者)讚賞你所作修改的解釋。 –

+0

謝謝,你也知道如何改變el.innerHTML = addCommas(currentNumber + 1);到一個隨機數 - 例如250到1500之間? – dwayneE

+0

'250 + Math.random()* 1250 | 0「是250的固定部分並且0 ... 1250的隨機值被強制爲整數。 –

0

使用setTimeout插件使用隨機時間參數在startCount()中輸入setInterval,並在count函數結束時調用它。

function startCount() 
{ 
    timer = setTimeout (count, Math.floor(Math.random() * 14000) + 1000); 
} 


function count() 
{ 
    var el = document.getElementById('counter'); 
    var currentNumber = parseFloat(removeCommas(el.innerHTML)); 
    el.innerHTML = addCommas(currentNumber+1); 
    startCount() 
}