2011-12-29 33 views
6

JSFiddle tarafından döngünün her yineleme:http://jsfiddle.net/KH8Gf/27/Gecikme belirli bir süre

Kodu:

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

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

nasıl belirli bir süre ile döngünün her tekrarında geciktirebilir?

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

ve

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

cevap

9

Bu vakalar tüm yerel bir işleve operasyon koyarak ve ardından setTimeout() yerel işlevi uygulamak için bu arayarak iyi çalışmıyor gibi görünüyor:

Ben başarısız aşağıdaki çalıştı Gecikme Bir sonraki (

$(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

Sen 'setTimeout hareket etmelidir,: Eğer döngü iz Orada bunun gibi saymak tutabilir böylece javascript kapanışları harikaları nedeniyle, yerel işlevi, üstünde seviyelerde tüm değişkenler erişim alır 500); 'if bloğu içine. –

+2

@JosephSilber - düzeltildi - thx. Çok hızlı yazmaya çalışmak (SO üzerine yazacak yarış bunu bana yapıyor). – jfriend00

+0

@ jfriend00 +1 ve işe yaradı. Yarım yazmayı bile bilmiyordum :( – gideon

İlgili konular