Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.06.2020, 23:30
Интересующийся
Отправить личное сообщение для АртемБМ Посмотреть профиль Найти все сообщения от АртемБМ
 
Регистрация: 29.03.2020
Сообщений: 10

Прокрутка слайдера влево
Дамы и господа! Не судите строго! Запутался в слайдере Как сделать чтобы он прокручивался и влево?

Есть такой код:
buttonRight.addEventListener("click", function () {

    ++i;
    
    if (i >= sliderItem.length) { // Условие если переменная i больше или равна количеству слайдов
        
        sliderItem[i-1].classList.remove("block"); // Удаляем класс block предыдущему слайду
        
        i = 0; // Присваиваем переменной i ноль
        
        sliderItem[i].classList.add("block"); // Добавляем класс block следующему слайду
    } else { 
        
        sliderItem[i-1].classList.remove("block"); // Удаляем класс block предыдущему слайду
        
        sliderItem[i].classList.add("block"); // Добавляем класс block следующему слайду
    }
})


Шаманство с переменой мест , со сменой знаков и прочие танцы с бубном не дали результатов. Я что-то не улавливаю, но не пойму что
Ответить с цитированием
  #2 (permalink)  
Старый 08.06.2020, 00:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

АртемБМ,
let setIndex = up => i = (i + up + sliderItem.length) % sliderItem.length;

buttonRight.addEventListener("click", function () {
    sliderItem[i].classList.remove("block");
    setIndex(1);
    sliderItem[i].classList.add("block")
})
buttonLeft.addEventListener("click", function () {
    sliderItem[i].classList.remove("block");
    setIndex(-1);
    sliderItem[i].classList.add("block")
})
Ответить с цитированием
  #3 (permalink)  
Старый 08.06.2020, 22:43
Интересующийся
Отправить личное сообщение для АртемБМ Посмотреть профиль Найти все сообщения от АртемБМ
 
Регистрация: 29.03.2020
Сообщений: 10

Как я догадался, вот эту строчку:
let setIndex = up => i = (i + up + sliderItem.length) % sliderItem.length;

можно разложить так:
let setIndex = function(up){

 return i = (i + up + sliderItem.length) % sliderItem.length;}


Не могли бы Вы её объяснить?
Ответить с цитированием
  #4 (permalink)  
Старый 08.06.2020, 22:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от АртемБМ
Не могли бы Вы её объяснить?
бесконечная генерация от нуля до length в любом направлении.
<script>
let sliderItem = {length  : 7}, i = 0;
let setIndex = up => i = (i + up + sliderItem.length) % sliderItem.length;
for (var k = 0; k < 23; k++) {
setIndex(-1)
document.write(`${i}<br>`)
}
</script>

<script>
let sliderItem = {length  : 7}, i = 0;
let setIndex = up => i = (i + up + sliderItem.length) % sliderItem.length;
for (var k = 0; k < 23; k++) {
setIndex(1)
document.write(`${i}<br>`)
}
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокрутка бустрап слайдера по колонке yozuul jQuery 2 11.01.2018 09:03
Автоматическая прокрутка слайдера jcarousel chopenko7 Общие вопросы Javascript 1 14.02.2016 01:22
Прокрутка слайдера с помощью мыши TimofeyEid jQuery 1 06.09.2015 17:13
автоматическая прокрутка слайдера с задержкой в 3 сек Ruslan080 Ваши сайты и скрипты 0 05.05.2015 18:24
Два слайдера на странице ureech Элементы интерфейса 1 14.05.2014 15:56