我想创建一个从50减少到1的倒计时,但我不想倒数每个数字之间相同的时间..如果这是50秒,我不希望它倒计时每秒一个数字。我正在尝试创建一个具有一点随机性的倒计时,所以可能需要2秒才能到达下一个数字或有时.5秒。我试图一直这样做到最后10秒,它会在计数器停在数字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秒,以及如何为它添加一些随机性?
答案 0 :(得分: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
答案 1 :(得分: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
})();
答案 2 :(得分:-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) );
没试过这个 编辑:嗯,这对我有用。