Ich versuche, ein Array mit Index i
durchlaufen. Was es derzeit erhöht i
alle 5 Sekunden.Neustart setInterval Timer nach Tastendruck
Allerdings möchte ich hinzufügen, in der Option i
manuell inkrementieren, die den Timer zurück auf 5 Sekunden (5000)
zurückgesetzt werden sollte. Wie erreiche ich das erfolgreich?
So zum Beispiel
[a, b, c, d, e, f, g]
Am Anfang sollte es „a“ (oder was auch immer Funktion, die ich später wählen) anzuzeigen, 5 Sekunden warten, Anzeige „b“ Wenn ich die rechte Pfeiltaste drücken dann sollte es sofort zu "c" wechseln, aber dann noch 5 Sekunden warten bis ich wieder -> drücke.
Ich habe versucht, das Inkrement in eine separate Funktion zu setzen, aber das hat nicht so gut funktioniert.
function doThis() {
if (i < (l + 1)) {
$('#myDiv').html(myArray[i]);
i++;
if (i == (l + 1)) {
doNext();
}
}}
var intervalHandle = setInterval(doThis, 5000); // start the interval by default
var running = true; // true if the interval is running, false if its not.
$("body").keydown(function (e) {
if (e.keyCode == 39) {//right
console.log("testing");
if (running) {
clearInterval(intervalHandle); // stop interval
running = false; // mark interval as stopped
} else {
intervalHandle = setInterval(doThis, 5000); // start interval
running = true; // mark interval as started
doThis(); // also change the image right now
}
} else {
e.preventDefault();
}
});
function doNext(){
//something here, when i ==l+1 as noted above
}
Vorschlag: Wenn der Benutzer etwas anzeigen möchte, stoppen Sie den Timer vollständig. Sie können langsam lesen und benötigen mehr als fünf Sekunden, und sie haben offensichtlich gezeigt, dass sie wissen, wie man sie manuell steuert. – zzzzBov