2016-12-05 1 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"클래스를 추가하여 모든 작업을 수행하십시오.

"doLoop"함수가 실행되는 것입니다. 짧은 지연 후에 다시 무작위로 선택한 다음 임의로 선택한 다른 요소를 찾아 "bauble_fadeOut"클래스를 토글합니다. ... 영원히 반복합니다 ...

아이디어가 있으십니까?

+1

방금 ​​대신'setTimeout'의 setInterval''을 찾고 계십니까? – David

+0

'setTimeout()'안에'setInterval()'을 원하는 것처럼 들린다 –

+0

No, 랜덤 딜레이 측면이 아니라. –

답변

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); 
관련 문제