2014-10-16 3 views
0

나는 대답을 시도했다 : Resetting a setTimeout,하지만 그것은 나를 위해 작동하지 않는 것 같습니다.settimeout을 재설정하는 방법

전 Owl Carousel을 사용하여 카탈로그 뷰어를 제작하고 있습니다. 사용자가 어떤 페이지를 보여 주는지 afterMove 이벤트 핸들러에서 해제하도록 설정된 함수가 있습니다. 페이지 카운터를 표시 한 다음 1 초 후에 페이드 아웃되도록 시간 제한을 설정합니다. 아마도 많은 사람들이 초당 1 회 이상 빠르게 페이지를 통과합니다. 따라서 함수가 다시 호출되면 타임 아웃을 재설정해야합니다.

function showCounter(){ 
    var $counter = $('#counter'); 
    //clear timeout 
    window.clearTimeout(timeout); 
    //Display counter 
    $counter.show(); 
    //set timeout 
    var timeout = window.setTimeout(function(){ 
     $counter.fadeOut(500); 
    }, 1000); 
} 

그러나 window.clearTimeout (제한하는) 동작하지 및

감사 기능 내부

+0

'timeout'은 코드에도 정의되어 있지 않습니다. –

답변

2

var timeout가 만드는 이유를 잘 모르겠어요 않습니다 timeout 함수에 지역; 따라서 showCounter으로 전화 할 때마다 timeoutundefined입니다. 변수 선언을 함수 밖으로 이동하십시오.

var timeout; 
function showCounter() { 
    // ... 
    timeout = // NO VAR! ... 
    // ... 
} 
+1

추가 설명 : 'varout timeout = ...'행보다 먼저 'timeout'이 정의되어 있지 않은 것처럼 보일 수 있습니다. JS의 "feature"덕분에 [variable hoisting] (http : //www.adequatelygood. co.kr/JavaScript-Scoping-and-Hoisting.html),'showCounter()'함수의 맨 꼭대기에'var timeout; '행이있는 것처럼 보입니다. – GregL