Прервать функцию
let prev = document.querySelector(".btn_prev"); let next = document.querySelector(".btn_next"); let slides = document.querySelectorAll(".slides"); let dot = document.querySelectorAll(".dot"); let slideWraper = document.querySelector(".slider_wraper"); let index = 0; let activeSlide = function(activ){ for(let i=0; i<slides.length; i++){ slides[i].classList.remove("active"); } slides[activ].classList.add("active"); } let activedots = function(activ){ for(let i=0; i<dot.length; i++){ dot[i].classList.remove("active"); } dot[activ].classList.add("active"); } let nextSlide = function(){ if (index == slides.length - 1){ index = 0; activeSlide(index); activedots(index); } else{ index++; activeSlide(index); activedots(index); } } next.addEventListener("click", nextSlide); let prevSlide = function(){ if (index == 0){ index = slides.length -1; activeSlide(index); activedots(index); } else{ index--; activeSlide(index); activedots(index); } } prev.addEventListener("click", prevSlide); dot.forEach( function (item, indexDot){ item.addEventListener("click", function(){ index = indexDot; activeSlide(index); activedots(index); clearInterval(interval); }) }) let interval = setInterval(nextSlide, 1000); мне нужно прервать функцию nextSlide при клике не могу сообразить как |
Цитата:
|
Цитата:
let prevSlide = function(){ if (index == 0){ index = slides.length -1; activeSlide(index); activedots(index); } else{ index--; activeSlide(index); activedots(index); } } prev.addEventListener("click", prevSlide); и она тоже сработает но вот тут будет конфликт let nextSlide = function(){ if (index == slides.length - 1){ index = 0; activeSlide(index); activedots(index); } else{ index++; activeSlide(index); activedots(index); } } next.addEventListener("click", nextSlide); |
Сергей Ракипов,
попробуйте написать функцию, которая будет менять индекс, и вторую которая будет показывать картинку согласно этого индекса. http://javascript.ru/forum/misc/7820...e-galerei.html http://javascript.ru/forum/dom-windo...slajjdere.html |
Цитата:
|
рони,
я что то все перепробовал вплоть до абсурда, не выходит почему просто нельзя по клику на кнопку остановить этот let interval = setInterval(nextSlide, 1000); |
я первое что сделал это вот это, но оно почему то в первый раз не сработало, и я стал перебирать множество вариантов, потом решил повторить и оно сработало.
function stopInterval(){ clearInterval(interval); } prev.onclick = stopInterval; next.onclick = stopInterval; ведь это же нормальное решение? или корявое |
Нормальное
Но можно было и так let nextSlide = function(){ if (index == slides.length - 1){ index = 0; activeSlide(index); activedots(index); } else{ index++; activeSlide(index); activedots(index); } clearInterval(interval); } next.addEventListener("click", nextSlide); let prevSlide = function(){ if (index == 0){ index = slides.length -1; activeSlide(index); activedots(index); } else{ index--; activeSlide(index); activedots(index); } clearInterval(interval); } prev.addEventListener("click", prevSlide); |
БЛАГОДАРЮ
|
Часовой пояс GMT +3, время: 17:42. |