2011-12-29 3 views
6

JSFiddle에 의한 루프의 각 반복 :http://jsfiddle.net/KH8Gf/27/지연 특정 시간

코드 :

$(document).ready(function() 
{ 
$('#expand').click(function() 
    { 
     var qty= $('#qty').val(); 

     for (var counter = 0; counter < qty; counter++) 
     { 
      $('#child').html($('#child').html() + '<br/>new text');    
     } 
    }); 
}); 

가 어떻게 특정 시간에 의해 루프의 각 반복을 지연 할 수 있습니까?

setTimeout(function(){ 
$('#child').html($('#child').html() + '<br/>new text'); 
},500); 

$('#child').delay(500).html($('#child').html() + '<br/>new text'); 

답변

9

을이 경우 모든 로컬 함수로 작업을 넣어 다음 setTimeout()에서 지역의 기능을 구현하는 것을 호출하여 가장 잘 작동하는 것 :

나는이 (가) 실패 다음 시도 지연. 다음 (

$(document).ready(function() { 
    $('#expand').click(function() { 
      var qty = $('#qty').val(); 
      var counter = 0; 
      var child = $('#child'); 

      function next() { 
       if (counter++ < qty) { 
        child.append('<br/>new text');    
        setTimeout(next, 500); 
       } 
      } 
      next(); 
     }); 
}); 
+2

당신은'에서는 setTimeout을 이동해야합니다 : 당신이 당신의 루프 트랙은 다음과 같이이 계산 유지할 수 있도록 자바 스크립트 폐쇄의 경이로움으로 인해, 로컬 함수는 위의 수준에서 모든 변수에 대한 액세스를 얻을 수 500);'if 블록으로. –

+2

@JosephSilber - corrected - thx. 너무 빨리 타자를 치려고 노력하고있다. – jfriend00

+0

@ jfriend00 +1 그리고 효과가있었습니다. 나는 중간에 타이핑도하지 않았다. ( – gideon