Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   setInterval. Временное изменение интервала. (https://javascript.ru/forum/jquery/21302-setinterval-vremennoe-izmenenie-intervala.html)

doniv 04.09.2011 18:47

setInterval. Временное изменение интервала.
 
Здравствуйте. Мне нужно, чтобы по клику на определенном элементе интервал изменялся с, например, 1000 на 10000. И после следующего срабатывания возвращался опять на 1000.

Вот до этого места я пока дошел (весь лишний код убрал), а дальше никак:

var timeSlider = 2000; //Время автоматической смены слайда

function StartSlider( firstPoint, secondPoint, largePath, largeAlt){  //Функция смены слайда
...
}


$(document).ready(function(){
        $(".slider__navigation a").click(function(){
...
                    StartSlider( firstPoint, secondPoint, largePath, largeAlt); //Тут я вызываю прокрутку слайда
            return false;
        });

        setInterval(function(){
            StartSlider( firstPoint, secondPoint, largePath, largeAlt);
        }, timeSlider);
});


Никак не могу понять, как при клике на ".slider__navigation a" я могу налету менять значение timeSlider.

Magneto 04.09.2011 19:16

var timeSlider = 2000; //Время автоматической смены слайда

//  При клике по элементу myElement утанавливаем значение таймера в 10000
myElement.addEventListener('click', function () { timeSlider = 10000 }, false);

function StartSlider( firstPoint, secondPoint, largePath, largeAlt){  //Функция смены слайда
...
}


$(document).ready(function(){
        $(".slider__navigation a").click(function(){
...
                    StartSlider( firstPoint, secondPoint, largePath, largeAlt); //Тут я вызываю прокрутку слайда
            return false;
        });

        setInterval(function(){
            StartSlider( firstPoint, secondPoint, largePath, largeAlt);
            timeSlider = 2000;  //  после первого срабатывания таймера устанавливаем значение в 2000
        }, timeSlider);
});

doniv 04.09.2011 23:06

Цитата:

Сообщение от Magneto (Сообщение 124769)
var timeSlider = 2000; //Время автоматической смены слайда

//  При клике по элементу myElement утанавливаем значение таймера в 10000
myElement.addEventListener('click', function () { timeSlider = 10000 }, false);

...

        setInterval(function(){
            StartSlider( firstPoint, secondPoint, largePath, largeAlt);
            timeSlider = 2000;  //  после первого срабатывания таймера устанавливаем значение в 2000
        }, timeSlider);
});

Спасибо. Но данный код не работает. Сначала ошибка была потому, что я не вставил вот эту конструкцию в домреди.

var sliderItem = document.getElementById('slider-navigation');
sliderItem.addEventListener('click', function () { timeSlider = 10000 }

После внесения все заработало, только время переключения таймера не изменяется по клику на элемент.

doniv 05.09.2011 14:44

Решил задачу по-другому.

Автопролистывание вынес в функцию (SliderSlide) за домреди.

В домреди первым делом вызываю эту функцию. А при клике на элемент делаю следующее:

$(".slider__navigation a").bind('click', function(){

        clearInterval(autoSlide); //Останавливаем слайдер на 1 минуту
        setTimeout(SliderSlide, 60000);
        ...
}


Часовой пояс GMT +3, время: 08:00.