2012-01-22 4 views
1

언제나 그렇듯이 누군가이 코드를 사용하여 조금 도와 주시면 감사하겠습니다.자바 스크립트에서 setInterval 사용

나는 다음 코드 줄이 있습니다

var count = 0; 
var limit = 2000; 
function liveCount(){ 
    var increment = count + 10; 
    count = increment; 
    if(count <= limit){ 
     document.getElementById('showCount').textContent=count; 
    }else{ 
     clearInterval(); 
    } 
} 
var counter = setInterval('liveCount()', 10); 

어떤이 코드가하는 일은 할 것 크로노 미터로 X 0에서 카운터를 시뮬레이션 할 수 있습니다. 독립 실행 형으로 사용할 때 완벽하게 작동하며 제한에 도달 할 때까지 카운팅을 시작하고 10 밀리 초 간격으로 카운트를 업데이트 한 다음 중지합니다.
지금까지 너무 좋아.
내 문제는이 코드를 "개수 및 제한"변수의 값을 제공하는 다른 함수 안에 중첩하면 "liveCount()"가 정의되지 않았 음을 알리는 오류가 발생합니다. "setInterval()"의 매개 변수에 추가하십시오.

나는 내가 생각할 수있는 모든 것을 시도해보고 작동시키지 않습니다.
어떤 아이디어가 누락되었거나 잘못 되었습니까?

감사합니다.

+1

'함수 안에 코드를 중첩하는'예제를 제공하십시오. – Joe

+0

'clearInterval'에 핸들을 전달하지 않습니다. –

+0

중첩 코드는 정수를 검색하는 간단한 함수이며, 그 변수를 제한 변수의 값으로 사용합니다. 그 밖의 것은 없습니다. – jnkrois

답변

1

, liveCount 글로벌 window 객체의 속성이어야합니다 찾고있는 것입니다. 이 코드를 함수에 넣으면 함수에 로컬로 liveCount이 정의되므로 window.liveCount이 존재하지 않습니다.

을 실행하지 마십시오. setInterval 코드를 실행하십시오. 대신, 은 다음과 같이 (따옴표가없는 것을 알), 그것에게 함수에 대한 참조을 제공 :

var counter = setInterval(liveCount, 10); 

전체 예 :

function someOtherFunc(limit) { 
    var count = 0; 
    function liveCount() { 
     var increment = count + 10; 
     count = increment; 
     if (count <= limit) { 
      document.getElementById('showCount').textContent = count; 
     } else{ 
      clearInterval(); 
     } 
    } 
    var counter = setInterval(liveCount, 10); 
} 
당신은 아마 또한 counter (또는 뭔가를 반환 할

),하지만 당신은 충분한 코드를 보여주지 못한다.

+0

대단히 감사합니다. 지금은 효과가있었습니다. 나는 범위에 문제가 있다고 생각했지만 그것은 나를 피했다. 감사합니다. . – jnkrois

0

귀하의 호출 내용을 클로저에 넣으십시오.

var counter = setInterval(function() { 
    liveCount(); 
}, 10); 

예 : http://jsfiddle.net/MattLo/HATmY/

+0

대단히 감사합니다 – jnkrois

+0

문제가 jnkrois! ^^ –

1

은 어쩌면 이것은 당신을 위해 ...

당신이 그것을 쓴 것처럼
function liveCount(count, limit){ 
    var increment = count + 10; 
    count = increment; 
    if(count <= limit){ 
     document.getElementById('showCount').textContent=count; 
    }else{ 
     clearInterval(counter); 
    } 
} 

function wrapper() { 
    // calculate count and limit 
    count = 0; 
    limit = 2000; 
    liveCount(count, limit); 
} 

var counter = setInterval(wrapper, 10); 
+0

고맙습니다. – jnkrois

관련 문제