2017-06-22 34 views
0

我遇到了一个问题,我有一个单独的setInterval(),但它同时执行两次。 我的代码从一个div克隆图像并将其放置在另一个div中。 setInterval()克隆了3倍的图像,但实际上克隆了6次。 当setInterval结束时,我有一个提醒。当第五个克隆被放置并且第六个克隆再次出现时,弹出警报,这意味着第五个克隆是第一个setInterval()的结束,第六个是第二个克隆的结束。但我只需要1 setInterval()就能制造出3个克隆。发生什么事?Javascript setInterval()同时执行两次

HTML:

<div class="inimigo"> 
    <img src="inimigo.png"> 
</div> 

<div class="jogo2"> 

</div> 

的jQuery:

$(document).ready(function() { 
    var counter2 = 0; 
    var i = setInterval(function() { 
     var inimigo = $(".inimigo").clone(); 
     $('.jogo2').html(inimigo); 

     counter2++; 
     if(counter2 === 3){ 
      alert("end"); 
      clearInterval(i); 
      counter2 = 0; 
     } 
    }, 200); 
}); 
+0

jQuery的没有一个'setInterval'功能 - 纯醇” JavaScript并 –

+0

@JaromandaX但仍然可以使用 –

+0

你的代码是将增加3次重复 - setInterval只有一次开始 - 请参阅[这个小提琴的代码](https://jsfiddle.net/98pyntmq/) –

回答

0

我想克隆是造成问题。 当您使用html()时,您应该将HTML作为文本传递。

请检查溶液,(JSFiddle

$(document).ready(function() { 
    var counter2 = 0; 
    var i = setInterval(function() { 
     var inimigo = $(".inimigo").clone(); 

     // Followin is the fix code 
     $('.jogo2').prepend(inimigo.html()); 
       // or use append to put new content at last 
     //$('.jogo2').append(inimigo.html()); 

     counter2++; 
     if(counter2 === 3){ 
      alert("end"); 
      clearInterval(i); 
      counter2 = 0; 
     } 
    }, 200); 
});