setTimer
을 사용하여 간단한 jQuery를 사용하여 슬라이드 쇼를 애니메이션으로 만들려고합니다. 나는 사용자에게 쇼를 시작하기 위해 클릭 한 다음 일시 중지 버튼으로 전환하는 단추 배경 이미지가있는 "DIV"형식의 단추를 사용자에게 제공합니다. 슬라이드는 매 3 초마다 변경됩니다. 다음은 관련 코드입니다.setInterval은 처음에만 작동합니다
playLink = $('<div id="lbPlayLink" />').click(function(){
$(playLink).hide();
$(pauseLink).show();
slideInterval = setInterval(function(){next()}, 3000)
})[0];
pauseLink = $('<div id="lbPauseLink" />').click(function(){
$(playLink).show();
$(pauseLink).hide();
clearInterval(slideInterval);
}).hide()[0];
next() 함수 호출은 다음 슬라이드로 대체하는 작업을 수행합니다. 이 함수를 체크 아웃하고 그것을 완벽하게 작동합니다 (동 기적으로), 즉, setInterval
에 의해 비동기 적으로 호출되면 처음에는 버튼을 클릭 한 후 3 초가 지나면 작동하지만 결코 절대로 작동하지 않습니다. 3 초 후에 다시 불러야한다고해도 다시 전화했다. 함수의 시작과 끝에서 "경고"호출을 호출 할 때 호출되지 않는다는 것을 알고 있습니다.
내가 alert('test')
와 setInterval
에서 next()
전화를 교체 할 경우 다음 나는 setInterval
그것이하도록되어 무엇을하고있다 볼 수 있습니다. 나는 삶의 이유로 나를 볼 수 없다. alert()
은 괜찮지 만, next()
은 기능의 "범위"와 관련이없는 한 그렇지 않다. 그러나 그 경우 처음으로 왜 작동 하는가?
파이어 버그로 코드 디버깅을 시도했지만이 같은 타임 아웃 기능으로는 도움이되지 않습니다. Firefox 나 IE8 모두 오류 메시지를 표시하지 않습니다.
여기 및 다른 곳의 setInterval
에있는 여러 게시물을 살펴 보았지만 아직 시도하지 않은 내용은 볼 수 없습니다. 나는 지금 약 3 시간 동안 실험을 해왔고 내 머리 속을하고있다. 누구든지 내가 다음에 시도 할 수있는 것을 제안 할 수 있을까?
CSS의 :
'다음'또는 그 이상이 무엇입니까? 코드를 표시 할 수 있습니까? –
next() 함수가 근본 원인입니다. –
Matt, 당신은 미쳤습니다 ;-) String 기반 setTimeout/setInterval은 원시 함수 전달보다 훨씬 느립니다 (eval 및 eval 불면을 사용해야하기 때문입니다). – machineghost