Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2011, 17:08
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

Ускоряющийся timeout/interval
В начале покажу код.
current = 0; // Блок который сейчас виден
total_boxes = 2; // Всего блоков (для примера 2)
function changeBoxes() {		
	var next = current+1 == total_boxes ? 0 : current+1;
	$('.bbox'+current).fadeOut(500, function() {
		$('.bbox'+next).fadeIn(500);
	});
	current = next;
};
$(function() {
	setInterval(changeBoxes, 5000);
});


В чем проблема:
В начале все нормально, один блок становится невидимым, другой появляется. Но через какое то время (примерно 5-10 минут) все блоке становятся видимыми и они начинают очень быстро появляться и исчезать.


Аналогичная проблема с другим кодом:
total_elems = $('.right_box .display .elems .right_box_center').length;  //для примера 12 скажем
elemsVisible = 9; // сколько элементов показывать (пачками по 9 :)  )
steps = Math.ceil(total_elems/elemsVisible); // Сколько пачек всего получается
currentStep = 0; // Текущая пачка))

function listPVT() {
	nextStep = currentStep+1;
	if (nextStep == steps)
		nextStep = 0;
		
	$('.right_box .display .elems').animate({top: '-'+(nextStep*9*40)+'px'});
	currentStep = nextStep;
}

$(function() {
	setInterval(listPVT, 5000);
});

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

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

Пробовал вместо интервала ставить тайм-аут, и в конце функции ее же вызывать через промежуток, получается те же самые глюки.

Помогите кто чем может буду рад любым мыслям))

Последний раз редактировалось nyols, 27.06.2011 в 17:21.
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2011, 17:57
Аспирант
Отправить личное сообщение для kostr Посмотреть профиль Найти все сообщения от kostr
 
Регистрация: 12.09.2010
Сообщений: 98

Может, перед анимацией stop() поставить?
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2011, 18:20
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

kostr,
Спасибо огромнейшее)) помогло))

Не смог бы ты объяснить логику что происходило ? зачем нужно было останавливать анимацию, если она вроде сама останавливается (время повтора анимации больше чем время самой анимации) ?
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2011, 22:37
Аспирант
Отправить личное сообщение для kostr Посмотреть профиль Найти все сообщения от kostr
 
Регистрация: 12.09.2010
Сообщений: 98

Дело в том, что у меня анимация не ускорилась, хотя работала долго. Подозреваю, в вашем документе есть еще что-то, что сбило настройку. А stop без вариантов останавливает все, и можно запускать заново.
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2011, 23:04
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

kostr,
Спасибо большое еще раз, и за пояснения тоже.
Не подумал о том что может быть конфликт с каким то другим скриптом.
Ответить с цитированием
Ответ



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

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