2013-02-02 3 views
1

가능한 중복 :
setInterval only runs once?SetInterval은 한 번만 호출하며 확실하지는 않습니다.

나는 디자이너 로직 성사 온다 저를 가정 해 봅시다 진행, 그래서 당신은 나의 무지와 베어링 감사하기 전에.

나는 간단한 슬라이더를 만들고 있는데, 사용자가 마우스로 그림을 움직이면 프로그램은 mouseup() 전에 마지막 두 번째 부분에서 다룬 거리를 기록 할 수 있기를 바란다. 사진을 스 와이프 한 것처럼 시뮬레이션 할 수있는 거리를 계산할 수 있습니다.

나는 그래서 내 기본 이벤트 핸들러를 가지고 :

function pretestFunction(){ 
    window.setInterval(testFunction(), 1000); 
} 

testfunction() :

function testFunction(){ 
    console.log('1 second'); 
} 

내 문제가

$('.testdiv').mousedown(function(){ 

    pretestFunction(); 

    //mouse is pressed 
    mousepressed = 1; 

    //set first X point 
    prevX = event.pageX; 


}).mouseup(function(){ 

    //get stop X point 
    stopX = event.pageX; 
    mousepressed = 0; 

}); 

pretestFunction 지금처럼 setInterval을 호출 설정 간격 함수는 한 번만 호출되며 매 초마다 한 번 호출되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

피들링을 만들 수 있습니까? – Mooseman

답변

5
window.setInterval(testFunction(), 1000); 

처음에

window.setInterval(testFunction, 1000); 

해야합니다, 당신은 두 번째에

을 (중요하지 이잖아 undefined을 될 일이 있지만)testFunction를 호출하는 값 을 전달하는 당신 값 testFunction (즉, 원하는 기능)이 될 것입니다.

+1

아하! 작지만 값 비싼 실수. 고맙습니다. sidenote에서 어떻게 setInterval을 사용하여 호출 된 함수에 변수를 전달할 수 있습니까? – styke

+3

정수 인수를 취하는 foo 함수가 있으면 다음과 같이 할 수 있습니다. setInterval (function() {foo (42);}, 1000); 즉, 원하는 값으로 함수를 호출하는 익명의 함수를 전달합니다. –

+0

고맙습니다. – styke