2012-10-08 2 views
0

간단한 js 애니메이션으로 숨기는 슬라이딩 패널을 만들려고했습니다. 개발중인 링크 : http://carportal.webpronto.it 왼쪽의 검색 탭을 보려면 "패널 숨기기"를 클릭하십시오.루프가 지정된 값으로 멈추지 않습니다.

문제는 다음과 같습니다. 패널이 왼쪽 위치에 도달하면 중지 할 값을 지정하려고했습니다. -25 % 그러나 패널은 무한대 대 바보 달리기를 계속합니다. 여기 스크립트는 내가 사용 :

<script type="text/javascript"> 
    var scrollSpeed = 50; 
    var step = 1; 
    var current = 0; 
    var endposition = 25; 
    function closeBAR(){ 
     current -= step; 
     if (current == endposition){ 


      stop; 

     } 



     $('#colleft').css("left",current+"%"); 



    var init = setInterval("closeBAR()", scrollSpeed); 

} 
</script> 

내 스크립트에 어떤 문제가 있습니까?

+1

'stop'은 (는) 자바 스크립트 키워드가 아닙니다. 거기에는 * ['window.stop'] (https://developer.mozilla.org/en-US/docs/DOM/window.stop)이 있는데, 이것은 그 식별자가 해결하는 것입니다 - 그리고 왜 에러가 없는지 던져 -하지만 기능이고, 당신은 그것을 부르지 않습니다. – josh3736

+1

그냥'setInterval'에 문자열을 전달하지 말고,'eval'을 사용합니다! 함수를 전달하십시오. 'var init = setInterval (closeBAR, scrollSpeed); ' –

+0

1) 여러 개의 인터벌을 생성하고 있습니다. 안좋다. 2) jQuery를 사용하고있다. 왜'animate'를 사용하지 않는가? – Shmiddty

답변

1

clearInterval(init); 

는 또한 endposition 부정적인해야

stop; 

와 라인 교체 :

var endposition = -25; 

대신 Slide 같은 jQuery를 UI 효과를 사용하는 것이 좋습니다, 그것은 당신의 코드를 만들 것입니다 더 읽기 쉽습니다.

+0

나는이 솔루션을 시도했지만 작동하지 않는 것 같습니다. –

+0

다른 힌트가 있습니까? –

+0

닫는 괄호}} init 전에해야합니다. 참조하십시오 [피들] (http://jsfiddle.net/2kR3P/1/) –

1

당신은 현재를 감소시키고 있으므로, 0부터 시작하기 때문에 음수로 끝납니다. -25가 25와 같지 않으므로 '중지'테스트가 실패합니다.

+0

-25, 아니 성공했습니다. –

0

코드에 "건조한"모양이 있으면 최소한 다음 문제가 발생합니다. 전체 변수 current은 절대로 endposition 값에 도달하지 않습니다. 처음에는 값 -1로 초기화되었으므로 current -= step == -1 (0 - 1)입니다.

관련 문제