2013-10-06 61 views
0

我想創建一個從50倒數到1倒數,但我不想在每個數字之間倒數相同數量的時間。比如,如果這是50秒,我不希望它每秒都倒數。我試圖用一點隨機性來創建一個倒數計時器,所以也許需要2秒才能到達下一個數字或者有時候是0.5秒。我想下來做這一切的方式到最後10秒它會有點減慢計數器停止在編號1我想創建一個從50倒數到1的倒計時,但我不想在每個數字之間倒數相同的時間量

繼承人的HTML我面前:

<span id="count">50</span> 

JavaScript的:

sec = 50; 

interval = setInterval(function() { 
    sec--; 
    document.getElementById('count').innerHTML = sec; 

    if (sec == 1) { 
    clearInterval(interval); 
    } 

}, 1000); 

的jsfiddle:http://jsfiddle.net/aVrPG/

我怎麼得到它到最後10秒慢下來,我怎麼添加一些隨機性的呢?

+3

jquery在哪裏? –

+0

@JamesMontagne刪除了jquery標籤 –

+0

如果你想改變正在更新的倒計時之間的延遲,那麼你會想要使用'setTimeout'而不是'setInterval':https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Timers – BYossarian

回答

0
var sec = 50; 

function execute() { 
    document.getElementById("count").innerHTML = sec; 
} 

(function loop() { 
    if(sec-- == 0) { 
    return // stop when we reach 0 
    } 

    setTimeout(function() { 
    execute(); 
    loop() 
    }, Math.round(Math.random() * 1E3) + (sec <= 10 ? 2E3 : 500)) 
       // random 1000 or 0 + 2000 if sec <=10 or 500 otherwise 
})(); 
-1

你必須改變間隔時間。創建一個新變量並在... hm,500和2000之間設置一個隨機值?至少在最後10秒鐘減慢速度。 只需使用if子句。

試試這個

sec = 50; 

interval = setInterval(function() { 
sec--; 
document.getElementById('count').innerHTML = sec; 

    if (sec == 1) { 
    clearInterval(interval); 
    } 

}, (sec < 11) ? Math.floor(Math.random()*1000 + 500): Math.floor(Math.random()*1000 + 1500)); 

沒有測試這種 編輯:嗯,它的工作原理爲我好。

1

至於改變間隔時間跨度,你不能用setInterval做到這一點。你需要使用setTimeout。

sec = 50; 

function interval(timespan){ 
    setTimeout(function() { 
     sec--; 
     document.getElementById('count').innerHTML = sec; 
     if (sec > 10){ 
      interval(1500); 
     } 
     if (sec > 1) { 
     interval(1000); 
    } 

    }, timespan); 
} 
interval(1000) 

我不確定你想要的隨機性。但是這應該指向正確的方向。 JSFIDDLE

+0

爲什麼它不起作用? – wernersbacher

+0

@bluetoft這是非常接近我想要的!通過隨機性我的意思是每個數字之間的時間,不跳過任何數字,但從41到42的不同時間從41到40不同。我該怎麼改變以改變這種情況? –

+0

@bluesoft我也注意到它超過了數字1,我​​該如何阻止它? –