jQuery随机生成随机数

时间:2013-03-20 17:51:31

标签: javascript jquery

我正在尝试制作一个插件。在这个插件中,我有两个变量; rateMin和rateMax。我想在这两个数字之间生成一个随机数,并将其用作setInterval时间。然后,一旦使用该号码,请创建另一个随机数并使用它。

这是一个简单的例子:

var defaults = {
    rateMin: 500,
    rateMax: 2000
}

var options = $.extend(defaults, options);
return this.each(function(defaults){

var rate = Math.floor(Math.random() * (options.rateMax - options.rateMin + 1)) + options.rateMin; // MAKE A RANDOM NUMBER BETWEEN MAX AND MIN
setInterval(function(){
    var rate = Math.floor(Math.random() * (options.rateMax - options.rateMin + 1)) + options.rateMin
    //DO SOMETHING
}, rate);

我希望这样做,速率会用新数字覆盖自己,并在下次调用setInterval时使用。但它仍然只使用setInterval之前的第一个数字。

我想我不知道如何在它的功能之外使用变量。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

如果您不希望每次延迟都相同,请使用setTimeout代替setInterval。另外,如果要覆盖外部作用域中的变量,请不要在回调中使用var rate。也就是说,我只是将这段逻辑封装在函数中而忘记它。

function getNextRate() {
    return Math.floor(Math.random() * (options.rateMax - options.rateMin + 1)) + options.rateMin;
}

setTimeout(function foo(){
    //DO SOMETHING

    setTimeout(foo, getNextRate());
}, getNextRate());