2013-12-23 5 views
0
function iPadMovie(id) { 
    $(function() { 
     var i = 1; 
     var interval = setInterval(function() { 
      jQuery('.animationMax img').attr({ 
       src: 'http://jdsports.scene7.com/is/image/JDSports/127932jd' + ('0' + i).slice(-2) + '?hei=255&wid=427&resmode=sharp&op_usm=1.1,0.5,0,0&defaultImage=JDSports/sizeImageMissing' 
      }); 
      i++; 
      if (i === 28) i = 1; 
     }, 100); 
    }); 
} 

function playIpad(){ 
    iPadMovie(); 
} 


function stopIpad(){ 
    clearInterval = interval; 
} 

여기에서 피들을 볼 수 있습니다. http://jsfiddle.net/Vv2u3/15/ 무비를 중지하고 재생 버튼을 누르면 다시 시작할 수 있습니다. 확실히 clearInterval 메서드 밖에서 사용할 수 있습니까?jQuery에서 함수 외부에서 clearInterval을 호출하려면 어떻게해야합니까? setInterval 외부

+0

덮어 쓰기 대신 함수를 호출 해보십시오. –

+0

@JanDvorak 예제를 보여줄 수 있습니까? – TheBlackBenzKid

+0

'interval' 변수는 jQuery의 DOM 준비 처리기에 전달 된 익명 함수로 범위가 지정되므로'stopIpad()'함수에는 표시되지 않습니다. 이 문제를 해결 한 후에는 단지'clearInterval = interval'보다는'clearInterval (interval)'을 사용하는 것입니다. –

답변

6

예 : link입니다.

var interval; 

function iPadMovie(id) { 
    $(function() { 
     var i = 1; 
     interval = setInterval(function() { 
      jQuery('.animationMax img').attr({ 
       src: 'http://jdsports.scene7.com/is/image/JDSports/127932jd' + ('0' + i).slice(-2) + '?hei=255&wid=427&resmode=sharp&op_usm=1.1,0.5,0,0&defaultImage=JDSports/sizeImageMissing' 
      }); 
      i++; 
      if (i === 28) i = 1; 
     }, 100); 
    }); 
} 

function playIpad(){ 
    iPadMovie(); 
} 

여기에 약간의 설명이 나와 있습니다. 먼저 interval 변수 (setInterval에 의해 반환 된 콜백 함수의 실제 처리기)는 iPadMovie() 함수 외부에 표시되지 않으므로 interval 변수는이 함수 외부에서 선언되어야합니다. stopIpad() 함수 안에서 clearInterval(handler) 함수를 호출해야합니다. 자세한 내용은 here을 참조하십시오.

function stopIpad(){ 
    clearInterval(interval); 
} 
2

clearInterval은 기능입니다. 당신은 당신이 유일한 인수로 지울 간격을 전달 호출해야합니다

function stopIpad(){ 
    clearIntervar(interval); 
} 

이 부분 거의 정확 interval는 간격이 삭제하려는 것을 처리 기억 변수입니다 :

var interval = setInterval(...); 

그러나 변수 intervalstopIpad 함수에서 볼 수 있도록 iPadMovie 함수 외부에서 선언해야합니다. var 문을 외부로 이동하십시오.

또한 재생 버튼을 두 번 누르면 어떻게됩니까? 당신이 새 설정하기 전에 당신은 현재의 간격을 막을 수 :

var interval; 
function iPadMovie(){ 
    clearInterval(interval); 
    interval = setInterval(...); 
} 

보조 노트로를, 이유는 왜 문서의 iPadMovie 대기 준비가? 나는 그 시점 이후에야 호출 될 것으로 기대한다. 이 경우 랩퍼를 제거 할 수 있습니다.