Ich habe eine setTimeout innerhalb der a for-Schleife, aber es verhält sich nicht wie ich es erwartet hatte.Verwenden von setTimeout innerhalb einer for-Schleife - funktioniert nicht
Ich habe eine Reihe von Bannern auf einer Seite, die alle auf einmal geladen werden. Ich entferne den Div-HTML-Code ihrer Eltern und speichere ihn in einem Array. Dann möchte ich, dass jeder Elternteil alle 5 Sekunden den entsprechenden HTML-Code erhält. Dies muss nur einmal im Bereitschaftszustand geschehen.
Hier ist mein Code ...
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>
Wie Sie können die Bilder sehen nicht bekommen, auf dem Bildschirm gedruckt einer nach dem anderen alle 5 Sekunden - was ich dachte, ich tat .
Vielen Dank für jede Hilfe.
Serge
Ich brauche nicht zu "Show" jeweils alle 5 Sekunden. Sobald die Seite geladen ist, muss ich den HTML-Code jedes Elternteils entfernen und in einem Array speichern. DANN alle 5 Sekunden wieder an ihren ursprünglichen Platz zurückstecken. Und es muss der gesamte innere html sein - entweder nur das img-Tag oder der img und der Anker. Ich hoffe, das macht Sinn lol. – Sergio
@Sergio Antwort aktualisiert –
Es funktioniert wunderbar. Können Sie bitte erläutern? – Sergio