2010-04-22 3 views
0

저는 3 개의 div (이미지)를 회전시키기 위해 기본 애니메이션을 사용하여 커스텀 jQuery 로테이터를 만들었습니다. 필자는 함수를 생성하고 콜백 함수를 사용하여 함수를 다시 초기화했습니다. 여기에 코드입니다 :jQuery 로테이터가 올바르게 회전하지 않음 - 너무 많은 재귀

 
function ImageRotate() { 

    var CurrentFeature = "#container" + featureNumber; 

    $(CurrentFeature).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); 

    var featureNumber2 = featureNumber-1; 
    if (featureNumber == 1) {featureNumber2=3} 
    var CurrentFeature2 = "#container" + featureNumber2; 
    $(CurrentFeature2).stop(false, true).delay(4500).animate({'top' : '0px'}, 3000); 
    $('#container2').stop(false, true).delay(4500).animate({'top' : '-330px'}, 25); 

    var featureNumber3 = featureNumber+1; 
    if (featureNumber == 3){featureNumber3=1} 
    var CurrentFeature3 = "#container" + featureNumber3; 
    $(CurrentFeature3).stop(false, true).delay(7500).animate({'top' : '0px'}, 3000); 
    $(CurrentFeature2).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); 
    $(CurrentFeature).stop(false, true).delay(4500).animate({'top' : '-330px'}, 25); 

    if (featureNumber ==1) {featureNumber=3} else{featureNumber--}; 
    $(CurrentFeature).stop(false, true).delay(7500).animate({'top' : '0px'}, 3000); 
    $(CurrentFeature3).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); 
    $(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,ImageRotate()); 
}; 

그것은 다시 함수를 호출 할 때 나는 또한 ImageRotate2라는 다른() 함수를 만드는 시도 것을 주목할 필요가; 그리고 그것은 똑같은 짓을 했어. 그것은 반복되지만, 나는 모든 종류의 재미를 느낀다.

편집 : 나는 또한 답장에서 몇 가지 해답을 시도했으며, 둘 다 초마다 재귀 오류를 남겨 둡니다.

답변

1

어느 당신이 뒤에 괄호를 넣어 때, 실제로 바로 다음을 호출하고 거기 같이, 함수 정의에서 그것을 참조) 또는 둥지를 통과 아니에요 (함수에 전달합니다

$(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,function {ImageRotate()}); 

편집 :

함수를 호출하는 대신,의 setTimeout와 그것을 대기열 시도 : 내가 이해하지 못하는거야

..., function() { window.setTimeout(ImageRotate, 1000); }); 
+0

이제 오류가 발생합니다 (공식 매개 변수가 없기 때문입니다.)이 오류가 발생하면 $ (CurrentFeature2) .stop (false, true) .... px '}, \ n " –

+0

기능이 좋지 않아요. 기능이 제대로 작동하지 않아서 열리기 전에 ( –

+0

) 글쎄, 내가 코멘트 한 오류를 없애 버렸습니다.하지만 매 초마다 재귀 오류가 발생합니다. –

1

변경이 라인은 :

$(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,ImageRotate()); 

당신은 함수에 핸들을 전달하는 함수를 호출하지 않는 결과를 필요

$(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,ImageRotate); 

수 있습니다. =)

+0

불행히도, 그 트릭을하지 않았다. 그것은 각각 초당 재귀 오류를주었습니다. [ –

0

를 당신에게 제공하지 왜 재귀 ERR ors. 코드가 눈이 피로 나지 않는 한, 자신을 호출하는 것을 멈추는 인스턴스가없는 것처럼 보입니다.

코드 전파를 중지 할 방법이없는 경우 오류가 반환됩니다.

관련 문제