在load()函数内设置1秒的间隙

时间:2016-09-07 10:25:52

标签: javascript jquery

我使用jquery load()来加载一些文件。

每次在此load()函数中调用myfuc()时,我需要有1秒的间隙。

这就是我所做的。目前它不会每1秒拨打myfuc(),它会同时拨打myfuc() 9次。

我的要求是在每个html文件满载时调用myfuc()。 要么 以1秒的间隔致电myfuc()

for(i = 1; i < 10; i++){
   $('#wrapper' + i ).load('some'+i+'.html', function(index) {
      setTimeout(function() {
         myfuc();
      }, 1000 * (index + 1));
   });
}

3 个答案:

答案 0 :(得分:0)

setInterval(myFunc,1000);

试试这个!

答案 1 :(得分:0)

// Select all images and for each
$('[id^="wrapper"]').each(function(idx) {
    // ... register listening on load event...
    var i = idx + 1;
    $(this).load('some'+i+'.html', function() {
        // ...and if particular image is loaded, start timer...
        setTimeout(function() {
        // ...which fires this func
            myfuc();
       }, 1000 * i);
    });
});

如果您明确需要从标签ID

读取var i

&#13;
&#13;
function myFunc(i) {
  console.log("Image with id wrapper"+i+" loaded"); 
}

$('[id^="wrapper"]').each( function() {  
  var i = parseInt($(this).prop("id").substring(7),10) ; 
  $(this).load('some'+i+'.html', function() {    
    setTimeout(function() {
      myFunc(i);
    }, 1000 * i);    
  });  
});
&#13;
<img src="http://placehold.it/100/60?text=Image 1" id="wrapper1">
<img src="http://placehold.it/100/60?text=Image 2" id="wrapper2">
<img src="http://placehold.it/100/60?text=Image 3" id="wrapper3">
<img src="http://placehold.it/100/60?text=Image 4" id="wrapper4">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

它可能是一个范围问题 - 每次设置超时都是相同的。

您可以尝试使用let变量

来解决它
   for(let i = 1; i < 10; i++){
       $('#wrapper' + i ).load('some'+i+'.html', function(i) {
           setTimeout(function() {
               myfuc();
           }, 1000 * (i+ 1));
       });
   }

或与IIFE

   for(var i = 1; i < 10; i++){
       (function (index) {
           $('#wrapper' + index).load('some'+index+'.html', function(index) {
               setTimeout(function() {
                   myfuc();
               }, 1000 * (index+ 1));
           });
       })(i);
   }