2011-10-31 4 views
3

간격을 사용하여 매 5 초마다 수신 거부하는 div가 있습니다.자바 스크립트 - 간격이 이미 설정되어 있는지 확인할 수 있습니까?

페이지 하단으로 스크롤하면이 div가 사라지고 간격이 지워집니다.

그러나 간격이 여러 번 만들어지고 중복되는 문제가 있다고 생각합니다.

간격이 설정되어 있는지 확인하는 방법이 있습니까? 그렇다면 간격을 설정하고 지우려면 설정하지 않으시겠습니까?

간격을 지울 필요가있는 이유는 jquery의 바운스 효과로 인해 div가 숨겨져 있어도 div가 다시 나타나기 때문입니다.

JSBIN : http://jsbin.com/ijuhok/4/

답변

4

이 스크롤 될 때마다이 간격을 설정하는 것이 보인다. 따라서 아래로 스크롤 한 다음 다시 아래로 스크롤하면 두 번 설정됩니다.

설정하기 전에 항상 손을 뗍니다. 그러면 확인해야합니다. 당신이 사방에서을 취소 할 수 있도록

http://jsbin.com/ijuhok/6

4

당신은 기존의 간격을 덮어 쓰기해야합니다 http://jsbin.com/ijuhok/5/. 항상 사용할 수 있기 때문에

$j("#more").fadeIn('slow',function(){ 
    ResInterval = window.setInterval(bounceMore, 5000); 
    // no "var" 
}); 

당신은 window에 대한 $(document).ready을 제거 할 수 있습니다.

$j("#more").fadeIn('slow',function(){ 
    var ResInterval = window.setInterval('bounceMore()', 5000); 
}); 

var 접두사를 제거하고 예상대로 코드가 작동 : 현재 ResInterval는 당신이 var 사용했기 때문에

+0

와우! 넌 너무 빨랐어 6 분 동안 대답조차 받아들이지 못해. 완벽 해, 고마워! - 빠르고 완벽하게 해결해 주신 모든 분들께 감사드립니다. 'var'로 항상 다시 정의 할 예정이었습니다. – waffl

+0

확인 매우 이상한 일이 있습니다. 잠시 동안 사이트를 유휴 상태로두면 div는 위치를 잃어 버려 화면 상단으로 이동합니다. 무슨 일이 일어나고 있는지 아십니까? http://dl.dropbox.com/u/396112/_IMG/_misc/setinterval-bounce.jpg (OS X 10.7.2, Chrome 15.0.874.106) – waffl

+0

@waffl : 이유는 모르겠지만 CSS 재설정 설정된 속성이 작동하는 것 같습니다 : http://jsbin.com/ijuhok/7/. – pimvdb

1

귀하의 문제는 로컬 범위에 ResInterval를 정의하고 있다는 것입니다 콜백 함수의 로컬 varibale은 fadeIn입니다. var이 생략되면 간격은 가장 가까운 ResInterval 선언 (var 사용)에 지정됩니다.

+0

아 ~ 정확하게 설명해 주셔서 감사합니다. 특히 변수의 범위에주의를 기울이셔서 감사드립니다. – waffl

0

다음과 같이했는데 문제가 해결되었습니다. 타이머를 clearTimeout 할 때 "false"와 같은 값을 설정해야합니다.

var timeer=false; 
---- 
---- 
if(timeer==false) 
{ 
    starttimer(); 
} 
----- 
----- 
function starttimer() 
{ 
    timeer=setInterval(activefunction, 1000); 
} 

function pausetimer() 
{ 
    clearTimeout(timeer); 
    timeer=false; 
}