2012-03-12 3 views
0

나는이 비트로 내가 처음부터 썼던 자바 스크립트를 엉망으로 만들었다. 그리고 나는 최근에 만난 작은 문제 하나만 제외하고는 꽤 잘 작동한다. 이 코드의 목적은 자동으로 (5 초마다) 순환하는 다소 간단한 슬라이드 쇼를 만드는 것입니다.시간 함수와 사용자 시작 함수 사이의 충돌

사용자가 링크를 클릭하여 시리즈에서 사진을 선택할 수있는 기능을 추가했을 때 문제가 발생했습니다. 이제 사용자가 사진을 계속 클릭하면 5 초의 지속 시간이 크게 줄어들고 그 원인을 파악할 수 없습니다.

코드를 다시 작성하고 테스트하는 데 필요한 모든 코드를 JSFiddle로 복사했습니다. 누군가가 신경을 써서 건설적인 비평을하고 싶다면.

http://jsfiddle.net/h8Act/1/

답변

0

때마다 사용자는 따라서 다른 setTimeout는 그래서 사실, 함수의 여러 인스턴스가있는 경우 단축 한 회전 사이의 시간처럼 보이는 시작, 그들은 sireTimer()의 또 다른 "라운드"시작하는 링크를 클릭 회전 기능을 발사.

시도가 addicional 내가 하나의 VAR에 있지만 배열의 제한 시간을 기억하지 않는 게 좋을

+0

고마워요, 행운을 빌어 여러 가지 방법을 시도했지만 해결책을 취한 sireTimer()가 실행될 때마다 전역 변수 (count = 0)를 생성하고 증분하여 sireTimer (count> 1) 인 경우 clearTimeout (duration)으로 이동합니다. – cyb1n

0

setTimeout

durations = []; 

/* ... */ 

// in sireTimer 
    // cancel all timeouts 
for (var i=0; i< durations.length; i++) { 
    clearTimeout(durations[i]) 
} 
    // clear timeout array 
durations = []; 
durations.push(setTimeout ...) 

이 가능한 것이 있습니다 시작 피하기 위해 플래그를 추가 창과 탭을 channging 몇 가지 시간 제한을 시작하십시오. 그래서 모든 타임 아웃을 지우십시오.

+0

제안 해 주셔서 감사합니다. 이 방법을 사용하여 코드를 작동시킬 수 없었지만 앞으로도 유사한 문제가 발생하면이를 염두에 두십시오. – cyb1n