문제

모든 사람들이 clearinterval에 몇 가지 문제가있는 것으로 보입니다.나는 사람들이 화살표를 클릭 할 수있게 해주는 슬라이더를 만들었습니다.배너는 몇 초 동안 회전합니다.누군가가 화살표 중 하나를 클릭하면 자동 회전을 할 수 있기를 원합니다.

여기 코드가 있습니다 :

$(function(){
    var intvl = 0;
    intvl = setInterval(heroTransitionNext, 2000);
    $('.rightArrow').click(function(){
       window.clearInterval(intvl);
    });
});
.

편집 :

여기에 호출하는 기능이 있습니다.

function heroTransitionNext() {
    $('.HP-hero li').filter(':visible').fadeOut('normal', function () {
        if ($(this).next().length != 0) {
            activeZone = parseInt(activeZone) + 1;
            $(this).next().fadeIn('normal', heroNavHighlight(activeZone));
        } else {
            activeZone = 1;
            $('.HP-hero li:first-child').fadeIn('normal', heroNavHighlight(activeZone));
        }
        $(this).hide();
    });
};
.

도움이 되었습니까?

해결책

애니메이션을 중지하려면 jquery.stop()를 사용할 수 있지만 문제를 해결할 수 있는지 여부를 확실하지는 않지만 (시각화하지 않음) 시도

$('.HP-hero li').stop(1,1); // or try $('.HP-hero li').stop()
window.clearInterval(intvl);
.

say2joeclearInterval가 다음 번에 함수가 호출되는 것을 중지하지만 현재 대기열 (그가 오른쪽)이 일어나지 않을 것입니다.이 경우 stop를 사용할 수 있습니다.

stop 정보

다른 팁

HerotRansitionNext 기능이 작동하는 작업에 따라 간격이 지워지는 경우에도 여전히 실행될 수 있습니다. 즉, 간격을 지우는 것은 함수가 호출되지 않음을 중지하지만 함수의 모든 인스턴스가 멈출 수 있습니다. (들) 메모리에서 실행되는 경우는 완료 될 때까지 계속 실행됩니다.

더 명확 해지면 유스 케이스가 있습니다 (Firebug 또는 개발자 도구의 프로파일 러를 사용하여이를 확인할 수 있음) :

HerotRansitionNext 실행 시간은 2.1 초입니다. clearinterval은 setInterval이 호출 된 후 6.1 초에 호출됩니다. 6.1 초에서 herotransitionnext가 4 번 호출되었습니다. 그러나 처음 세 가지 실행이 완료되었지만 네 번째는 실행이 끝날 때까지 완료되지 않습니다 (setInterval이 호출 된 이후 8.1 초). 참고 :이 사용 사례에서는 마지막 호출의 실행이 계속 계속되는 동안 각 연속 호출이 실행됩니다 (100 ms 더 많은 MS). 즉, 2에서 2.1, 4에서 4.1, 6에서 6까지의 실행 중첩이 있습니다. 6.1 두 번째 간격.

함수가 간격 세트보다 실행하는 데 더 오래 걸리면 setTimeout ()을 사용하여 재귀 함수를 사용하십시오. 다음 링크는 당신에게 좋은 예를 제공합니다.

또한 설명을위한 좋은 참고 자료는 https://developer.mozilla.org/ en / dom / window.setInterval .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top