Ich arbeite auf ui Tabs mit jQuery gebaut. Alles funktioniert bis auf ein Problem - ich habe eine setInterval ausgeführt, die eine Funktion ausführt, die einen Trigger ("klick") ausführt, so dass es nach 5000 Millisekunden zur nächsten Registerkarte geht. Wenn der Benutzer manuell auf eine Registerkarte klickt, wird der Zeitgeber für das SetInterval nicht um 0 neu gestartet. Zum Beispiel, wenn ein Benutzer auf Tab1 bei 0 Millisekunden starten und auf Tab2 um klicken soll 2000 Millisekunden geht der setInterval nicht auf 0 zurück, er würde bei 2000 anfangen und auf 5000 Millisekunden laufen und würde dann zu Tab3 gehen. Ich verstehe, warum es passiert, ich frage mich nur, ob es eine Möglichkeit gab, das setInterval-Timing neu zu starten, ohne ein clearInterval() zu machen und ein komplett neues setInterval() zu erstellen. Jeder Einblick würde geschätzt werden.Neustart eines setInterval() in Javascript/jQuery (ohne clearInterval)
aktualisieren
Danke für die Antworten - Der Grund, warum ich clearInterval Verwendung war, weil ich hatte Probleme, wie Sie den Code in einer Art und Weise zu schreiben, wo die clearInterval die setInterval aufhören würde völlig zu vermeiden versuchte. Der Code wird eingerichtet, um zu verfolgen, wann immer ein Benutzer auf eine Registerkarte geklickt hat. Das Problem ist, dass die Auto-Change-Funktion einen Trigger ("Klick") verwendet, so dass sie die ClearInterval-Funktion ausführt, die ich auch geschrieben habe, wenn sich die Tabs automatisch ändern. Es scheint von alleine ziemlich gut zu laufen, aber sobald der Benutzer auf Registerkarten klickt, verhält sich setInterval ungewöhnlich und wechselt unvorhersehbar die Registerkarten. Ich vermute, was passiert ist, dass mehrere setIntervals auf einmal laufen ... Hier ist der Code (Wenn Sie es nicht schon erraten haben, bin ich ziemlich neu bei javascript/jquery). Ich habe Teile auskommentiert, so dass es funktioniert, aber es funktioniert immer noch nicht so, wie ich es beabsichtigt hatte (vom ersten Post).
// auto change tabs
if(options.interval) {
function timerCom() {
if(!$(".controller").hasClass('paused')) {
var i = $(".tab-current > a").attr("rel");
//alert(i);
if(i == 3) {i = 0};
$container
.find('a')
.eq(i)
.trigger('click');
}
}
//$("#promo-items > li > a").click(function() {
//var timer;
//if(timer != null) {clearInterval(timer);}
timer = setInterval(timerCom, options.interval);
//});
}
Willkommen bei SO!Bitte bearbeiten Sie Ihre Frage nur, wenn Sie weitere Informationen benötigen. Verwenden Sie Kommentare für spezifische Fragen zu Antworten. SO ist kein Forum, das Antwortfeld ist ausschließlich für Antworten auf die Frage reserviert. –