Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 18.09.2010
Сообщений: 40
1

Проблема с таймером

24.10.2012, 16:21. Показов 1095. Ответов 2
Метки нет (Все метки)

Здравствуйте.
Вылез подводный камень при работе с таймером.

Javascript
1
2
3
4
5
6
7
8
var timer = setTimeout(function run() {
    ...         
    $(img1).animate({'margin-left': ...},1000,
        function(){
            ...
        });
    timer = setTimeout(run, 5000);
}, 5000);
Это слайдер и раз в 5 секунд происходит сдвиг картинки влево. Слайдер работает отлично. Но во время простоя не отрабатывают другие скрипты.
То есть пока слайд не двигается, то, к примеру, скрипт, меняющий цвет фона под текстом при наведении курсора мышки, не отрабатывает, а отрабатывает только 1 секунду, во время выполнения animate.

В чём здесь дело?

Добавлено через 2 часа 31 минуту
[тему можно удалить]
дело не в таймере, а в чём-то другом. Забыл написать, что проблема только в Опере. Что-то со стилями и скриптами в Опере.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2012, 16:21
Ответы с готовыми решениями:

проблема с таймером 1
написал прогу в которой работает таймер1 в реале не рабоает, почему не понятно #include...

проблема с таймером
Добрый вечер. Начал недавно заниматься программированием микроконтроллеров (использую...

Проблема с таймером
Здравствуйте. У меня проблемка. Есть такой код: using System; using System.IO; using...

Проблема с таймером =(
Я запускаю таймер в "Form1_load" пытаюсь остановить событии timer1_Tick, но условие не работает,...

2
13198 / 6585 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
25.10.2012, 20:40 2
Цитата Сообщение от ASmirnoff Посмотреть сообщение
В чём здесь дело?
.animate(..., 1000) - лишь добавление инфы в очередь и мгновенный возврат.
А вот потом, когда очередь наступит, оно начнёт выполнять анимацию, дробя её на N мелкий timeout'ов в течение 1000 мс. Так что Ваш таймаут просто смещивается и теряется среди тех таймаутов, которые выполняют анимацию.

Можно так
Javascript
1
2
3
4
5
6
7
8
9
10
(function(){
    var img = $('#img1');
    function go() {
        img.animate({...}, 1000, next);
    };
    function next() {
        setTimeout(go, 4000);
    };
    next();
})();
1
2 / 2 / 0
Регистрация: 18.09.2010
Сообщений: 40
25.10.2012, 22:24  [ТС] 3
У меня что-то со стилями напортачено оказалось. Заново переделал и стало отрабатывать.
А Ваш вариант действительно грамотно выглядит. Всё логично так. Использую его.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2012, 22:24

Проблема с таймером
Почему на Delphi XE4 в "Таймере" не работает следующий код: procedure TForm1.Timer1Timer(Sender:...

проблема с таймером и прерыванием
Решил подключить к stm32vldiscovery двухразрядный семисегментный индикатор. Включить отдельно...

ATMega8 проблема с таймером
Вот такой вот косяк... <Изображение удалено> по прерыванию с int0 (сигнал с пульта) получаю...

Проблема с таймером на ассемблере
Всем доброго времени суток. Я только начал изучать ассемблер. До этого работал только на C. Вроде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.