jQuery를 사용하여 몇 가지 요소에 타이머 또는 간격 루프를 설정하여 매 2 초마다 확인합니다. 타이머를 설정하고 다시 시작해야하는지, 설정 및 간격을 확인하고 중지해야하는지 확인해 보았습니다. 클래스 항목에 대한javascript 타이머 또는 간격이 폐쇄문을 사용하여 루프로 생성되었습니다.
var mytimers = new Array();
$('div.items').each(function() {
myID = $(this).attr('id');
mytimers[myID] = setInterval(function() { myFunction(myID) } , 3000)
});
function myFunction(param) {
alert(param);
if (something()) {
clearInterval(mytimers[param]);
}
}
의 ID 년대는 ID_1, ID_2, id_3 있습니다 : 간단하지만
이 내가 필요한 기본적이다. 그러나 나는 id_3을주는 3 개의 알림을 받는다. 제 코드에서는 'this'를 전달하기 시작했지만 문제를 파악하기 위해 계속 단순화했습니다.
매번 변수를 새 주소로 복사 할 수 있습니까? 나는 폐쇄를 사용해야한다는 것을 알고있다. 그것은 다른 var 아무 mater 무엇을 참조하는 것으로 보인다.
는 그래서 같은 타이머와 함께 루프로 단순화 시도 :function tester(item) {
return function() {
alert(item);
};
}
for(x=1;x<=3;x++) {
setTimeout('(function() { tester(x) })(x)' , 3000);
}
하지만 난 그냥 내 문제가 악화 있다고 생각하고는 아무것도하지 않는 것.
이전 질문을 검색했지만 대부분이 특정 문제를 줄이기보다는 많은 여분의 코드로 채워져 있으며 다른 방식으로 해결되었습니다. 이 예제가 작동하는 방식으로 이것이 더 잘 작동하는지 이해하고 싶습니다. 나는 이것을 작성하는 동안 관리 기능을 사용하여 타이머를 설정할 수 있다고 생각했습니다.
function tester(item)
alert(item);
function myTimer(item)
setInterval(function() { tester(item); }, 3000);
for(x=1;x<=3;x++)
myTimer(item);
어떻게하지 않고이 작업을 수행 할 수 있습니까? 더 좋은 방법이 있습니까?
루프 인덱스를 포함하여 모든 로컬 변수를'var'으로 선언해야합니다. – Pointy