添加循环到setTimeout

时间:2013-12-13 15:34:57

标签: javascript jquery

JS:

setTimeout(function() {
    $('#houses div:last').after('<div class="item current-last '+ randClass +'"></div>');

}, 2000);

但是曾经一次。我想要一个循环。我该如何解决?

var house = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
randClass = house[Math.floor(Math.random() * house.length)];

4 个答案:

答案 0 :(得分:3)

使用setInterval代替setTimeout。前者设置一个间隔调用的计时器,而后者设置一个只调用一次的计时器。

此外,每次修改DOM时都要调用随机化代码。一种简单的方法是将它包含在区间函数中,如下所示:

setInterval(function() {
    var house = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
    var randClass = house[Math.floor(Math.random() * house.length)];

    $('#houses div:last').after('<div class="item current-last '+ randClass +'"></div>');
}, 2000);

答案 1 :(得分:2)

您需要使用:

setInterval(//insert your function and interval here)

这将解决'仅执行一次'问题。

至于想要获得不同的randClass值,你需要管理它,做一些修改randClass值,间隔之间的东西,以满足你的目的。 正如@Lanello建议的那样,你可以将它随机化。或者可以增加它。无论你的应用程序逻辑是什么。

答案 2 :(得分:0)

你必须写一个

function RandomizeClass()

并在SetTimeout中调用它,而不是将其写入内部,当然你在setTimeout之前设置了randClass值,然后它的值永远不会改变。

答案 3 :(得分:0)

试试这个:

var intv = setInterval(test, 2000);
// you can also clear the interval 
// by use clearInterval(intv);
function test(){
   $('#houses div:last').after('<div class="item current-last '+ randClass +'"></div>');
}