Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2015, 14:25   #1
Bender1000
Пользователь
 
Регистрация: 20.05.2013
Сообщений: 37
Вопрос Проблема с setTimeout

Есть слайдер, нужно его останавливать при наведении мыши. Есть такой код, но он сильно глючит, и после нескольких наведений мышью слайдер выглядит как бешеная курица.

Код:
var timer; //создаем переменную
function slidenext(){
            timer = setTimeout(slidenext1, 7000); // присваиваем ей Timeout
            jQuery('.someDiv').hover(function(){
                clearTimeout(timer); // убираем Timeout
            },function(){
                timer = setTimeout(slidenext1, 7000); // снова запускаем Timeout
            })
            console.log('7 sec');
        }
setTimeout(slidenext, 7000);
Что не так? Вроде бы переменную объявил глобально, и все операции должны происходить с только с одной переменной. Но, похоже, после нескольких наведений у меня их становится много и они все работают одновременно. Как сделать, чтобы всегда была только одна переменная?

P.S. Опциональное усложнение: из-за некоторых особенностей нельзя использовать setInterval
10000 часов програмирования - https://vk.com/tth.ikarev
Bender1000 вне форума Ответить с цитированием
Старый 27.08.2015, 14:38   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Ай, что это такое? для чего столько вызовов таймаута ?
uberchel вне форума Ответить с цитированием
Старый 27.08.2015, 14:43   #3
Bender1000
Пользователь
 
Регистрация: 20.05.2013
Сообщений: 37
По умолчанию

Ну там ангулар запускает эту функцию первый раз на timeout, и я хочу понять, как мне дальше с этми работать. По сути ведь при каждом наведении последний таймаут должен закрываться, а новый открываться должен только после mouse out.
10000 часов програмирования - https://vk.com/tth.ikarev
Bender1000 вне форума Ответить с цитированием
Старый 27.08.2015, 15:27   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

slidenext1
не?
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 27.08.2015, 16:07   #5
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Листинг слайдера скиньте
uberchel вне форума Ответить с цитированием
Старый 27.08.2015, 17:55   #6
Bender1000
Пользователь
 
Регистрация: 20.05.2013
Сообщений: 37
По умолчанию

Всем спасибо, решил все-таки setInterval'ом вопрос.
10000 часов програмирования - https://vk.com/tth.ikarev
Bender1000 вне форума Ответить с цитированием
Старый 27.08.2015, 17:59   #7
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
slidenext1
не?
Скорее всего не. slidenext1 - наверное, функция, которая непосредственно управляет процессом пролистывания слайдов, а slidenext - только вызывает slidenext1 (если требуется).

Без более подробного кода вряд ли что-то определённое можно сказать.
Но по-моему, ТС изобретает велосипед.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 27.08.2015, 20:57   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Я о том же подумал, листинг слайдов больно извратно напридумываный. Незнай уж, что не скинул весь код слайдера, мож довели бы до продакшена )
uberchel вне форума Ответить с цитированием
Старый 27.08.2015, 22:32   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Скорее всего не. slidenext1 - наверное, функция, которая непосредственно управляет процессом пролистывания слайдов, а slidenext - только вызывает slidenext1 (если требуется).
То есть до первого пролистывания проходит 14 секунд? Для терпеливых юзеров однако.
п.с. slidenext1 — я так в 5 классе переменные называл...
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery setTimeout Mortimoro JavaScript, Ajax 2 24.04.2013 14:48
Замыкания и setTimeout Виталий Желтяков JavaScript, Ajax 7 26.01.2012 13:16
setTimeout bulldog5293 Работа с сетью в Delphi 1 22.07.2010 14:31
SetInterval и SetTimeOut Syltan JavaScript, Ajax 1 10.05.2010 22:42