2013-07-02 1 views
1

버튼을 클릭 한 후 Javascript 함수를 호출하고 싶을 때 1.5 초 동안 100 밀리 초마다 반복 한 다음 일시 중지합니다.매 x 초마다 Javascript 함수를 호출하고 y 초 후에 중지 하시겠습니까?

이 아코디언 슬라이더는이 사용자 정의 jQuery 스크롤 막대를 사용하여 스크롤 가능한 내용을 표시 할 수있게하려는 것입니다. (다른 더 나은 사용자 정의 크로스 브라우저 스크롤 막대는 전혀 모릅니다.)

스크롤 바는이 기능을 할 때마다 사용자가이를 사용하여 항목 중 하나를 클릭을 재구성해야

:

나는 아래의 예와 같이 setInterval을 사용했습니다 원활하게 실행 전환을하기 위해
$(".ac-big").customScrollbar("resize") 

:

<script type="text/javascript"> 
$(window).load(function() { 
$(function(){ 
    setInterval(function(){ 
    $(".ac-big").customScrollbar("resize") 
},100); 
}); 
</script> 

문제는 스크립트가 매우 많은 자원을 소비한다는 것입니다. 100 밀리 초마다 이것을 실행할 필요는 없습니다. 사용자가 하나의 라디오 버튼을 클릭 한 후에 만 ​​1.5 초 동안 100 밀리 초마다 실행되도록하고 싶습니다.

또 다른 문제가 있습니다. 아코디언 슬라이더는 라디오 버튼을 사용하여 제작되었으므로 라디오 버튼에서 javascript 기능을 호출하는 방법은 무엇입니까?

setTimeout과 setInterval을 태그에 삽입했습니다. 그 두 가지를 조합해야한다고 생각하기 때문에 태그에 setTimeout과 setInterval을 삽입했습니다. 필요한 모든 빌딩 블록이 있다면 여기에 시간을 낭비하지 않을 것입니다.

+3

당신은'setTimeout'과'setInterval' 태그를 지정했기 때문에 필요한 기본 빌딩 블록이 이미 있음을 알 수 있습니다. 너는 무엇을 더 필요로 하는가? 당신의 시도를 보여주십시오. –

+0

질문을 수정했습니다. 희망 사이트 조건에 맞는 지금. 감사! –

+2

비공개 웹 서버에서 호스팅되는 페이지로 링크하지 마십시오. 라이브 데모로 질문을 보충하고 싶다면, jsfiddle을 고려해보십시오.하지만, 여러분의 질문은 오프 사이트 코드에 링크하지 않고 자급 자족하고 대답 할 수 있어야합니다. – meagar

답변

4

이 주어 :

나는 버튼을 클릭 한 후 자바 스크립트 함수를 호출 할

, 그것은 루프 1.5 초마다 100 밀리 초를하고 다음을 일시 중지합니다. http://jsfiddle.net/pUWHm/

// I want to call a Javascript function after clicking a button 
$('.button').click(function() { 
    var started = Date.now(); 

    // make it loop every 100 milliseconds 
    var interval = setInterval(function(){ 

    // for 1.5 seconds 
    if (Date.now() - started > 1500) { 

     // and then pause it 
     clearInterval(interval); 

    } else { 

     // the thing to do every 100ms 
     $(".ac-big").customScrollbar("resize") 

    } 
    }, 100); // every 100 milliseconds 
}); 

전략이 ​​버튼을 클릭하면 간격을 시작하는 것입니다, 당신은 간격 ID 것을 저장 :

이 그것을해야한다. 또한 시작했을 때 저장합니다. 간격이 매번 실행될 때마다 충분히 길 었는지 확인합니다. 아직 시간이 없다면, 그 일을하십시오. 시간이라면 다시 발사되지 않도록 간격을 지우십시오.

+0

나는 당신의 코드를 좋아하지만 더 쉬울 수는 없습니다. ''++ ''할까요? – Jonathan

+0

주파수를 변경하고 'i'의 새로운 최대 값을 계산하는 것을 잊어 버리면 어떻게 될까요? 이 작업을 수행하는 데는 여러 가지 방법이 있으며, 보통 1 년 후 나에게 엉덩이를 물을 수있는 방법을 선택합니다. –

+0

동일한 타이머가 1 년 실행되고 작년과 비교하여 얼마나 많은 반복이 수행되는지 확인하십시오.) – Jonathan

관련 문제