Ich habe diesen Code, der 24 Bilder in einem Intervall von 0,08333 Sekunden anzeigen soll. Es zeigt jedoch nur das letzte Bild. HTML:Anzeigen verschiedener Bilder innerhalb von 0,08 Sekunden Timeout
<!DOCTYPE html><html><head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script><script type="text/javascript" src="script.js"></script><title>page</title></head><body>
<img src="untitled.0001.jpg">
</body></html>
In javascript:
$(document).ready(function() {
$(document).keydown(function(e) {
switch(e.which) {
case 39: // right
for (var i = 1; i != 24; i++) {
setTimeout(function(){
$("img").replaceWith("<img src='image.000"+ i +".jpg'>");
},83);
}
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action (scroll/move caret)
});
});
Wie kann ich es machen alle Bilder in einem Timeout von 0,08333 Sekunden
Update: Ich habe versucht, es zu lösen und kam mit dieser:
$(document).ready(function() {
$(document).keydown(function(e) {
switch(e.which) {
case 39: // right
var count = 1;
while (count!=24) {
var waiting = 83 * count;
setTimeout(function() {$("img").replaceWith("<img src='avatar/walk/HumanWalk.000"+ count +".jpg'>");}, waiting);
count+=1;
}
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action (scroll/move caret)
});
});
Warum funktioniert es immer noch und zeigt nur das letzte Bild?
Mögliche Duplikat [JavaScript-Verschluss Innenschleifen - einfaches praktisches Beispiel] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-beispiel) – JJJ
Passen Sie auch auf, dass das Laden des Bildes einige Zeit in Anspruch nimmt. Möglicherweise möchten Sie Bilder vor dem Anzeigen vorab laden. –
Sie müssen sich bewusst sein, dass Ihre for-Schleife innerhalb von ein paar Millisekunden endet. Das bedeutet, dass alle setTimeout-Funktionen innerhalb dieses winzigen Intervalls zwischen dem Start und dem Ende Ihrer for-Schleife ausgelöst werden. Sie sind nicht sequenziell. – 1sloc