2017-10-27 9 views
0

매우 좋고 가볍기 때문에 슬라이드 쇼를 사용 중입니다.setInterval을 사용하여 자동 실행되는 javascript 슬라이드 쇼를 중지하십시오. - 시네마

사용자가 마우스를 가리키면 슬라이드 쇼를 시작하고 떠나면 중지합니다.

가이드 문서에 따라 setInterval()을 사용하여 재생 비트가 작동하지만 슬라이드 쇼를 중지 할 수 없습니다. 나는 그 간격을 없애려고 노력하고 있지만 그것은 효과가없는 것 같습니다.

여기 만지작 내 전체 코드를

const mySiema = new Siema({ 
    duration: 250, 
    loop: true, // note: this just gets the slideshow to return to the beginning 
}); 

const container = document.querySelector('.siema'); 

var timer, intervalInSec = 1000; 

container.addEventListener('mouseenter',() => setInterval(() => mySiema.next(), intervalInSec)); 

container.addEventListener('mouseleave', clearInterval(timer)); 

heres a codepen을합니다.

+0

아무 곳에서나 타이머를 지정하지 마십시오. –

답변

2

setInterval() 메소드의 출력에 timer를 지정해야합니다.

그것은 (setInterval을)은 고유의 간격을 식별하는 간격 ID를 반환, 그래서 당신은 또한 마우스 휴가 이벤트에 익명 함수를 호출해야 할 사항 clearInterval()

를 호출하여 나중에 제거 할 수 있습니다 clearInterval()을 제대로 호출해야합니다. 예 :

container.addEventListener('mouseenter',() => timer = setInterval(() => mySiema.next(), intervalInSec)); 

container.addEventListener('mouseleave',() => clearInterval(timer)); 
+0

완벽한 감사 ... 그 빈 괄호는 익명의 함수입니다. 실제로 첫 번째 비트를 시도했지만, 그게 내가 누락 된 것이라고 생각합니다. 감사. 5 분 안에 받아 들일 수 있습니다. – JorgeLuisBorges

+0

오른쪽에서'addEventListener'의 두 번째 매개 변수에 함수의 이름을 넣거나 ('()') 그것을 호출하거나 익명의 함수를 실행하고 안에 원하는 코드를 넣을 수 있습니다 우리가 여기에서하는 것처럼) –

+0

여기에 관심있는 사람들을 위해 완전한 지연 코드를 제거하고 초기 지연을 제거하고 시작으로 돌아 가기위한 기능이 있습니다. https://codepen.io/venncreative/pen/GOKVeW – JorgeLuisBorges