Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2018, 16:04
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Вертикальный слайдер
Написал скрипт для вертикального слайдера, но запнулся на том, что не могу понять, куда теперь вставить строку кода для добавления класса "active" для текущего слайдера. Remove поставил, а с add никак не могут разобраться. Может кто подскажет?


let activeIndex = 0,//Текущий слайд
	sliderContainer = document.getElementById('vertical-slider'),//Контейнер слайдера
	sliderItems = document.querySelectorAll('.main-slider-item'),//Псевдомассив слайдов
	sliderPrev = document.querySelector('.vertical-slider__prev-btn'),//Стрелка вправо
	sliderNext = document.querySelector('.vertical-slider__next-btn'),//Стрелка влево
	timerVert;

//Основная функция слайдера
	function changeSlide(n) {

		if (n > sliderItems.length) {
	//Возврат к первому слайду после перебора всего псевдомассива слайдов
			activeIndex = 1;
		};

		if (n < 1) {
	//Возврат в конец псевдомассива после перебора всего псевдомассива слайдов в оратном направлении
			activeIndex = sliderItems.length;
		};

	//Установка видимости текущего слайда
		sliderItems[activeIndex - 1].classList.add('active');

	};

	//Функции увеличения индекса активного слайда.
	//Получают данные (n) из обработчика событий sliderPrev и sliderNext
		function plusSlides(n) {
			changeSlide(activeIndex += n);
		};

		function currentSlide(n) {
			changeSlide(activeIndex = n);
		};

	//Переключение на один слайд назад по клику
		sliderPrev.addEventListener('click', () => {
			plusSlides(-1);
		});

	//Переключение на один слайд вперед по клику
		sliderNext.addEventListener('click', () => {
			plusSlides(1);
		});

	//Приостановка автоматического переключения слайдов 
	//при наведении курсора на контейнер (sliderContainer)
		sliderContainer.addEventListener('mouseenter', (e) => {
	        clearInterval(timerVert);
	    });

	//Возобновление автоматического переключения слайдов 
	//при выводе курсора за пределы контейнера (sliderContainer) 
	    sliderContainer.addEventListener('mouseleave', (e) => {
		        timerVert = setInterval( () => {
		        sliderNext.click();
		    }, 3000);
		    changeSlide(activeIndex);
	    });

	//Установка таймера автоматического переключения слайдов с интервалом в 3 секунды
		timerVert = setInterval( () => {
	        sliderNext.click();
	    }, 3000);
	    
	//Запуск слайдера
	changeSlide(activeIndex);
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2018, 16:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

DVV,
делали б макет полностью
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2018, 16:12
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от DVV
Remove поставил, а с add никак не могут разобраться.
В представленном коде add есть, а remove отсутствует...
Ответить с цитированием
  #4 (permalink)  
Старый 11.09.2018, 16:20
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Да, и тут я снова ошибся. Не пойму, куда remove, а не add поставить.
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2018, 16:23
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,733

DVV, попробуйте подставить в 21 строку:
sliderItems.forEach(n=>n.classList.remove('active'));
Ответить с цитированием
  #6 (permalink)  
Старый 11.09.2018, 16:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

DVV,
нормальный алгоритм:
сначала убрать класс затем изменить activeIndex
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2018, 12:54
DVV DVV вне форума
Кандидат Javascript-наук
Отправить личное сообщение для DVV Посмотреть профиль Найти все сообщения от DVV
 
Регистрация: 26.12.2017
Сообщений: 125

Спасибо всем! Слайдер домучал
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вкладки и слайдер slicks ildar94 Элементы интерфейса 6 16.01.2018 15:29
Как поместить слайдер в модальное окно? ИщуПомощь Элементы интерфейса 2 24.08.2017 20:27
Вертикальный слайдер. slavAAvals Элементы интерфейса 1 13.01.2017 11:26
вертикальный слайдер с прокруткой сайта alexander098 jQuery 0 12.01.2016 22:41
Вертикальный слайдер или ..? Jonny316 Элементы интерфейса 17 29.10.2014 13:30