Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2012, 19:04
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Слайдер CSS + jQuery глюк
Всем привет)
Помогите решить проблемку со слайдером?
Слайдер мой, как видно из названия на CSS и jQuery создавал на основе урока http://ruseller.com/lessons.php?rub=29&id=534
Но у меня не пункты-ссылки а две стрелки по бокам.
Вот сам скрипт:
http://jfdu.ucoz.ru/slider.js

Проблема у меня с ним в файрфоксе, хроме:
Перешёл на сайт с слайдером, не выключил его, пошёл гулять по другим вкладкам, пришёл через несколько минут, а он начал ускоренно перелистывать слайды (там стоит таймер на каждые 6 секунд, а он перелистывает без пауз) спустя какое-то время слайдер возвращается в нормальный режим. Такое чувство, что он листал столько, сколько он пролистал бы пока я гулял по др. вкладкам.
И ещё, возможно это от одной яблони, он запоминает кол-во нажатий и листает столько, сколько раз я нажал на стрелку.

Помогите плиз

P.S. На гугле забанят если я опять буду доставать его своими поисковыми запросами
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2012, 19:35
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Acreator57887,
Думаю корень тут
rotateSwitch = function(){
    play = setInterval(function(){ //Задать таймер
        $active = $('.paging a.active').next(); 
        if ( $active.length === 0) {
            $active = $('.paging a:first'); //после последней - обратно на первую
        }
        rotate(); 
    }, 7000); //Время для прокрутки (7 секунд)
};

rotateSwitch();

Функцию стоит переделать через setTimeout и вызов самой себя, в первой строке функции clearTimeout(timeoutId)
всех предыдущих вызовов http://javascript.ru/setTimeout
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2012, 20:01
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

А подробнее можно?
Я так понял setTimeout выполняет функцию через заданное время один раз. А как же сделать выполнение "по кругу"?
"вызов самой себя" это как? Возможно, я ошибаюсь, но мне кажется это всего лишь удвоит время..
хотя по идее должно сработать, всё равно можно подробнее, а то я с синтаксисом не дружу
Может попробовать пропустить её через цикл? Или будут ошибки?

Последний раз редактировалось Acreator57887, 27.06.2012 в 20:09.
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2012, 20:44
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Спасибо за новый способ
Но не помогло. Глюк остался.

Последний раз редактировалось Acreator57887, 28.06.2012 в 13:55.
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2012, 22:57
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Acreator57887, Пробуйте добавить
var timeout2;
function rotateS() {
*!*
    clearInterval(play);
*/!*
    clearTimeout(timeout2);
    timeout2 = setTimeout(function() {rotateSwitch ();rotateS() }, 6000);
}

rotateSwitch = function(){
rotate_r(); 
rotateS();
};
Ответить с цитированием
  #6 (permalink)  
Старый 27.06.2012, 23:40
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

С этой строчкой вообще не листает.
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2012, 11:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Acreator57887
С этой строчкой вообще не листает.
Ясен перец, тады данный setInterval; нун тоже переделать через setTimeout и делать подобно
предыдущей замене, внутри цикла перезапуска того setTimeout и сбрасывать clearTimeout(play);
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2012, 13:39
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Блин ничего не понял. Второй чтоль делать? Почему "тоже"? он же один вроде таймер-то.
"Ясен перец, тады данный setInterval; нун тоже переделать через setTimeout" А первый раз мы не его переделывали??
Ответить с цитированием
  #9 (permalink)  
Старый 28.06.2012, 13:45
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Acreator57887,
У Вас их похоже два - первый проверяет на отсутствие кликов перезапускает анимацию при остутствии кликов в течении какого то времени,
Второй запускает анимацию периодически через 6 сек
Ответить с цитированием
  #10 (permalink)  
Старый 28.06.2012, 13:53
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Блин как всё странно... в опере норм работает. Да нет там второго таймера или я ошибаюсь? Ссылку на сам сайт с слайдером в ЛС кинул.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странный глюк при работе с JQuery Kirill Tsvetkov Events/DOM/Window 1 13.03.2012 21:49
Задание Css свойств по средствам Jquery IONEX jQuery 5 09.01.2012 16:00
jquery слайдер, анимация при переключении вкладки KiTaeZa Events/DOM/Window 1 05.09.2011 20:52
jQuery UI Slider - как синхронизировать слайдер со значнием? frightened jQuery 0 24.07.2011 00:19
JQuery CSS анализатор javascript jQuery 2 15.08.2010 21:27