Je travaille sur des onglets créés avec jQuery. Tout fonctionne à l'exception d'un problème - J'ai fait un setInterval qui exécute une fonction qui effectue un trigger ("clic") de sorte qu'il passe à l'onglet suivant après 5000 milisecondes. Il passe très bien à travers chaque onglet, le problème est que si l'utilisateur clique manuellement sur un onglet, le timer de setInterval ne redémarre pas à 0. Par exemple si un utilisateur devait démarrer sur tab1 à 0 miliseconde et clique sur tab2 à 2000 miliseconds, le setInterval ne revient pas à 0, il commencerait à 2000 et s'exécuterait à 5000 milisecondes et deviendrait ensuite tab3. Je comprends pourquoi cela se passe, je me demande juste s'il y avait un moyen de redémarrer le timing setInterval sans avoir à faire un clearInterval() et en créant un tout nouveau setInterval(). Toute idée serait appréciée.Redémarrage d'un setInterval() dans Javascript/jQuery (sans clearInterval)
Mise à jour
Merci pour les réponses - La raison pour laquelle je tentais d'éviter d'utiliser clearInterval parce que j'avais des problèmes de la façon d'écrire le code d'une manière où le clearInterval arrêterait complètement le setInterval. Le code est configuré pour suivre chaque fois qu'un utilisateur a cliqué sur un onglet. Le problème est que la fonction de changement automatique utilise trigger ('clic'), donc elle exécute la fonction clearInterval que j'ai écrite aussi quand les onglets changent automatiquement. Il semble fonctionner assez bien seul, mais une fois que l'utilisateur commence à cliquer sur les onglets, setInterval se comporte de manière inhabituelle et change de tabulation de façon imprévisible. Je suspecte que ce qui se passe est que plusieurs setIntervals s'exécutent en même temps ... Voici le code (Si vous ne l'avez pas déjà deviné, je suis assez nouveau sur javascript/jquery). J'ai commenté des parties de façon à ce qu'elles soient fonctionnelles, mais elles ne fonctionnent toujours pas comme prévu (à partir du premier message).
// 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);
//});
}
Bienvenue sur SO!S'il vous plaît, éditez votre question si vous avez besoin de fournir des informations supplémentaires. Utilisez des commentaires pour des questions spécifiques sur les réponses. SO n'est pas un forum, le champ de réponse est strictement réservé aux réponses à la question. –