2011-07-07 3 views
0

나는 한 시간 이상이 스크립트를 고치려고 노력했지만 여전히 작동하지 못하고있다. 그것은 setInterval에서 애니메이션 및 HTML jquery 이벤트를 수행하는 루프입니다. 여기 setInterval 문제 (js)

는 바이올린입니다 : 여기

http://jsfiddle.net/GNrL3/ 코드입니다 (바이올린과 동일하지만, 일부는 여기를 선호) :

$(document).ready(function() { 

var i = 1; 
var startinterval = 0; 

$('#clickhere').click(function() { 
    startinterval = setInterval("curvalues()", 1000); 
}); 

function curvalues() { 
    if ($i == 20) { 
     clearInterval(startinterval); 
    } 
    else { 
     $("#square").animate({ 
      "left": "+=30px" 
     }, "slow"); 
     $("#text").html("Barracks"); 
     $i++; 
    } 
} 

}); 

<div id="square" style="position:absolute;height:30px;width:30px;background-color:#F07014;"></div> 
<br /><br /><br /><br /><br /> 
<div id="text" style="height:30px;width:100px;border:1px solid #000">Text box</div> 
<br /><br /> 
<input type="button" value="Start" id="clickhere"/> 

내 믿음은 문제가 함수의 setInterval을 우려한다는 것입니다 , 그래도 구문은 나에게 좋을 것 같습니다 ...

답변

2

변경이 줄이로

startinterval = setInterval("curvalues()", 1000); 

:

startinterval = setInterval(curvalues, 1000); 

또는이 :

startinterval = setInterval(function() { curvalues(); callSomethingElse(); }, 1000); 

그리고이 i의 앞에 $ 제거. 그럴 필요가 없습니다.

+0

빠른 응답을 보내 주셔서 감사합니다! –

+0

Btw, 기능을 일시 중지/다시 시작하거나이 작업을 수행 할 수 없다면 어떤 생각이 있습니까? –

+0

'setInterval'이'clearInterval (startinterval);을 호출하는 것을 멈추기 위해서'; "startinterval"은이 경우 변수의 나쁜 이름이고 "timer"또는 "interval"과 같은 것으로 변경한다고 생각합니다. – Kon

3

기능 범위 문제가 있습니다. 대신이의 :

setInterval("curvalues()", 1000); 

이 작업을 수행 :

setInterval(curvalues, 1000); 

편집을 당신은 한 번 더 실수를. 카운터 변수의 이름이 잘못되었습니다. 나는 당신의 바이올린을 업데이트

(i 대신 $i 또는 참조 모든 바르)

var $i = 1; //You missed the '$' 

을 : 그것은 다음과 같이 선언한다 http://jsfiddle.net/GNrL3/1/ 그것은 작동합니다.

희망이 도움이됩니다. 건배

+0

고마워요! 나는 매일 배우고있다! 거기에있는 동안 기능을 일시 중지/다시 시작하거나이 작업을 수행 할 수 없다는 생각이 들지 않습니까? –

+0

@ 에드거 알아요,하지만 그저 멈추고 일시 중지 된 곳에서 다시 시작하겠습니다 (처음이 아니라) –