2016-12-05 28 views
0

jQueryでコードを少しうまく動かすのに苦労しています...私は関数を起動し、初期設定の遅延後にループします。私が行くことにしようとしています関数内でループされた関数を呼び出す

コードは次のとおりです。だから、

var delayTime = 1000; 

setTimeout(function(){ 
    function doLoop() {  
     var RandomID = Math.floor(Math.random() * 7) + 1 
     console.log("do loop") 
     var baubleSelected = ".bauble_0"+RandomID; 
     $(baubleSelected).toggleClass("bauble_fadeOut"); 
    } 
    doLoop(); 
}, delayTime*9); 

、初期9000msの遅延の後、「doLoop」関数を呼び出します。ランダムな整数を計算してクラス名に追加し、そのランダムに選択された要素に "bauble_fadeOut"クラスを追加します。もう一度少し遅れてしまいました。ランダムに選択した要素をランダムに見つけ、その上の "bauble_fadeOut"クラスをトグルします。...いつまでも繰り返す...

アイデア?

+1

あなただけの代わりに '' setTimeout'のsetInterval'をお探しですか? – David

+0

'setTimeout()'の中で 'setInterval()'を望むように聞こえます。 –

+0

いいえ、ランダムな遅延のアスペクトではありません。 –

答えて

1

まず、あなたはあなたの呼び出しを簡素化することができます:あなたは、内側doLoop機能を必要としません:

var delayTime = 1000; 

setTimeout(function(){ 
    var RandomID = Math.floor(Math.random() * 7) + 1 
    console.log("do loop") 
    var baubleSelected = ".bauble_0"+RandomID; 
    $(baubleSelected).toggleClass("bauble_fadeOut"); 
}, delayTime*9); 

さて、これが繰り返し実現するために簡単です。 setIntervalを使用するか、コールバック関数の最後でsetTimeoutに電話を入れて、次のいずれか

var delayTime = 1000; 

setInterval(function(){ 
    var RandomID = Math.floor(Math.random() * 7) + 1 
    console.log("do loop") 
    var baubleSelected = ".bauble_0"+RandomID; 
    $(baubleSelected).toggleClass("bauble_fadeOut"); 
}, delayTime*9); 

// OR 

var delayTime = 1000; 

setTimeout(function doLoop(){ 
    var RandomID = Math.floor(Math.random() * 7) + 1 
    console.log("do loop") 
    var baubleSelected = ".bauble_0"+RandomID; 
    $(baubleSelected).toggleClass("bauble_fadeOut"); 

    setTimeout(doLoop, delayTime*9); 
}, delayTime*9); 
関連する問題