Я пытаюсь создать слайдер flex по примеру w3schools.Сброс таймера для слайдера flex при нажатии
Автоматическое скольжение и новый слайд по щелчку работает как charme, но я не могу заставить свою голову обмотать, как сбросить таймер каждый раз, когда я нажимаю на кнопки.
Да, у меня почти нет опыта работы с jquery/javascript, и я протестировал resetTimer(), t.reset() и многое другое в любом месте, которое я мог бы как-то понять. Было бы супер рад, если бы кто-то мог помочь мне здесь.
Благодаря Sam0, я уже отредактированный код - где-то еще что-то не так:
<script type="text/javascript">
var slideIndex = 0;
carousel();
var repeater;
function carousel() {
var i;
var x = document.getElementsByClassName("mySlides");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
slideIndex++;
if (slideIndex > x.length) {slideIndex = 1}
x[slideIndex-1].style.display = "block";
}
function cycle(){
setInterval(function(){
carousel();
}, 5000);
}
cycle();
function cycle(r){
if (r){ // if r is true then clear and restart the timer
clearInterval(repeater); // clear the timer
repeater = setInterval(function(){ // start the timer
carousel();
}, 5000);
} else {
clearInterval(repeater); // clear and stop the timer if r isn't true
}
}
cycle(true);
var slideIndex = 1;
showDivs(slideIndex);
function plusDivs(n) {
showDivs(slideIndex += n);
}
function currentDiv(n) {
cycle(true);
showDivs(slideIndex = n);
}
</script>
Ваш предыдущий сценарий имел функцию с именем 'showDivs', которая в настоящее время отсутствует и не может быть названо. Лучше не изменять ваши ответы таким образом, так как это затрудняет людей, которые могли иметь подобную проблему для отслеживания, плюс это создает разрыв. Вместо этого проследите за комментариями и, где возможно, используйте jsfiddle, чтобы проиллюстрировать проблему. – Sam0