我在a循環中有一個setTimeout,但它不像我預期的那樣工作。在for循環中使用setTimeout - 不工作
我在一次加載所有頁面的頁面上有一串橫幅。我將他們的父母的div html並將其存儲在一個數組中。然後,我想每個父母每5秒收到一次相應的html。這隻需要在就緒狀態下發生一次。
這裏是我的代碼...
function oneBanner() {
var divs = $('.banner-slide'),
imgs = [];
for (var j = 0; j < divs.length; j++) {
imgs.push($('.banner-slide:nth-child(' + (j+1) + ')'));
}
for (var k = 0; k < imgs.length; k++) {
var url = $(imgs[k]).html();
$(imgs[k]).html('');
setTimeout(function(y) {
console.log(k * 5000);
$(imgs[k]).html(url);
}, k * 5000, k);
}
}
oneBanner();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class="banner-slide">
<img src="http://www.placecage.com/150/150" >
</div>
<div class="banner-slide">
<a href="#"> <img src="http://fillmurray.com/150/150" > </a>
</div>
<div class="banner-slide">
<img src="http://stevensegallery.com/150/150" >
</div>
正如你所看到的圖像沒有得到在同一時間打印在屏幕上的一個每5秒 - 這是我認爲我做的。
謝謝你的幫助。
塞爾
我並不需要 「秀」 每次每5秒替換 'Y'。一旦頁面加載,我需要刪除每個父母的HTML並將其存儲在一個數組中。然後每隔5秒重新將它們插回到原來的位置。它必須是整個內部html - 無論是img標籤還是img和錨點。我希望這是有道理的大聲笑。 – Sergio
@Sergio答案更新 –
它的工作很精美。你能否詳細說明一下。 – Sergio