2013-01-31 1 views
0

I 함수이므로 같은 경우 :일련의 타임 아웃 명령을 중단 하시겠습니까?

function x() 
{ 
    animate(a, 2000); 
    animate(b, 3000); 
    animate(c, 4000); 
} 

- A, & C 브렉퍼스트 - 페이지 요소를 나타내는 변수이며, 개수로 사용하는 애니메이션() 함수에 전달 된 파라미터 그래서 같은 시간 초과 기간 값 :

function animate(src, dur) 
{ 
    setTimeout(function() { 
     src.style.opacity = 1; 
    }, dur); 
} 

모든 것은 지금까지 괜찮지 만, 나는 애니메이션 루프의 탈옥 할 수있는 기능을 원하는 경우, 나는 그것에 대해 어떻게 가야합니까? clearTimeout()이 내가 원하는 것입니까?

+0

애니메이션 루프가 표시되지 않습니다. 3 개의 독립적 인 타임 아웃이 표시됩니다. – Bergi

답변

1

시간 초과가 할당 된 변수는 clearTimeout 함수에 전달되어 기능을 중지 할 수 있습니다. 이러한 변수를 배열에 저장하고이 배열을 반복하고 시간 초과를 clearTimeout 함수에 전달하여 모든 시간 초과를 쉽게 지울 수 있습니다.

+0

이것은 흥미로운 코드처럼 보입니다. ,하지만 여기서 나의 이해 부족을 용서해주십시오 - 타임 아웃은 무엇입니까 (시간 초과), 나는 '푸시'부분을 얻지 못합니다. 첫 번째 줄에서 만든 배열 객체에 대한 일반적인 방법입니까? – Abhishek

+1

@Abhishek : ['push'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/push)는 항목을 배열로 푸시합니다. – Bergi

0

예, clearTimeout() 갈 올바른 방법입니다 :

function animate(src, dur) 
{ 
    return setTimeout(function() { 
     src.style.opacity = 1; 
    }, dur); 
} 

그리고 반환 ID를 저장합니다

function x() 
{ 
    var aId = animate(a, 2000); 
    var bId = animate(b, 3000); 
    var cId = animate(c, 4000); 
} 

나중에 당신은 단순히 clearTimeout(aId) 전화하거나 둘 중 당신이 원하는. 귀하의 코드에 아무런 루프도없고 setTimeout()setInterval()에 opoosed로 한 번만 실행됩니다.

+0

그래, 애니메이션을 끝내기 때문에 타임 아웃을 사용하고 있는데, 루프를 감추고 싶지는 않다. 그러나 어쨌든 그것을 지적 해 주신 덕분에 ... :) – Abhishek