使用setinterval显示最终数字之前的随机数字

时间:2013-06-10 22:25:27

标签: javascript jquery random counter setinterval

我有3个div(#digit1,#digit2,#digit3),代表已知数字的3位数字(例如:459)。在显示实际数字之前,我想显示0到9(每100毫秒)的20个随机数,用于每个数字。

使用jQuery,我能够显示第一个数字,如下所示:

    function displayInterval(callback,currentnumber) {
        x = 0;
        var interval = window.setInterval(function () {

           callback();

           if (++x === 20) {
               window.clearInterval(interval);
                $("#digit1").html(currentnumber);                  
           }
        }, 100);
    }

    var number1="4";    
    var number2="5";
    var number3="9";    


    displayInterval(function () {
        var randomnumber=Math.floor(Math.random()*10);
        $("#digit1").html(randomnumber);
    },number1);

如果我再添加2次对displayInterval的调用,它只适用于1位数,而其他两位则永远显示随机数。

提前感谢您的帮助!

注意:以上只是我需要的简化示例。我的号码可以有1到6位数,如果超过3位数就必须加一个空格(例如:12 450),这就是为什么我需要将每个数字放在一个单独的div中。

1 个答案:

答案 0 :(得分:0)

您应该使用数组来存储数字。并在每三个数字之间加上差距。

jsFiddle Live DEMO

你应该像你在问题中所说的那样为你的每个数字加一个div(查看演示)。

将您的JavaScript更改为此,并查看演示的HTML代码

function displayInterval(callback) {
     x = 0;
     var interval = window.setInterval(function() {
           callback();
           if (++x === 20) {
               window.clearInterval(interval);

               var nums = $("div[num]");
               var max  = $("div[num]").reverse().attr('num');
               var i = max, j=1;
               $.each( nums, function( key, value ) {
                   if(j%3==0) {
                       $("div[num='"+i+"']").html("&nbsp"+$(this).attr("value"));
                   } else {
                       $("div[num='"+i+"']").html($(this).attr("value"));
                   }
                   i--;j++;
               });                 
           }
    }, 100);
}

displayInterval(function () {
    var nums = $("div[num]");
    var max  = $("div[num]").reverse().attr('num');
    var i = max, j=1;
    $.each( nums, function( key, value ) {
         var randomnumber=Math.floor(Math.random()*10)+"";
         if(j%3==0 && i != max) {
             $("div[num='"+i+"']").html("&nbsp"+randomnumber);
         } else {
             $("div[num='"+i+"']").html(randomnumber);
         }
         i--;j++;
    });  
});