随机化计数计时器以在特定时间段内完成

时间:2013-05-10 17:21:25

标签: javascript jquery

我有一个简单的倒计时器,计数到指定的数字并在一段时间(65秒)后完成。我想知道如何将计数随机化一点点,以便它在某些点上更快,在其他点上更慢,但仍然在指定的结束时间完成。这是我用来计算的功能。 maxCount是动态的,但我在本例中将其设置为101。

我在这里设置了一个jsfiddle:http://jsfiddle.net/bz2Hz/

function fillCounter() {
var maxCount = 101;
var interval = 65000/maxCount;
var val = 0;
count();
function count(){
    if ( val <= maxCount ){
        val++;
        $('.results-number').html(val);
        setTimeout(count,interval);
    }
}
}

任何提示将不胜感激。提前致谢

1 个答案:

答案 0 :(得分:1)

尝试将间隔设置为随机

fiddle

function fillCounter() {
var maxCount = 101;
var interval = 65000/maxCount;
var val = 0;
count();
function count(){
    if ( val <= maxCount ){
        val++;
        $('.results-number').html(val);

        setTimeout(count,interval);

        var plusOrMinus = Math.random() < 0.5 ? -100 :100;
        console.log(plusOrMinus);
        interval =  (interval + Math.floor((Math.random())+plusOrMinus));

        console.log(interval);
    }
  }
}
fillCounter();

编辑:

你可以尝试这样 fiddle

  1. 设置计时器

    var count = 65;
    var counter = setInterval(timer, 1000); 
    function timer() {
    counting();
    count = count - 1;
       if (count <= 0) {
        clearInterval(counter);
        return;
     }
    
     }
    
  2. 然后通过设置随机间隔

    来打印您的值
      var val = 0;
    
      function printer() {
        val++;
         $('.results-number').html(val);
      }
    
     function counting() {
       var multi = Math.random() < 0.5 ? 1 : 10000;
    
       interval = Math.floor((Math.random() * multi));
    
        console.log(interval);
        setTimeout(printer, interval);
     }