Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Ускоряющийся timeout/interval (https://javascript.ru/forum/dom-window/18358-uskoryayushhijjsya-timeout-interval.html)

nyols 27.06.2011 17:08

Ускоряющийся 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 разметку не показываю, с нее нет смысла, сам код работает, просто через какое то время начинает глючить. Никак не могу догнать где я что то упустил.

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

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

kostr 27.06.2011 17:57

Может, перед анимацией stop() поставить?

nyols 27.06.2011 18:20

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

Не смог бы ты объяснить логику что происходило ? зачем нужно было останавливать анимацию, если она вроде сама останавливается (время повтора анимации больше чем время самой анимации) ?

kostr 27.06.2011 22:37

Дело в том, что у меня анимация не ускорилась, хотя работала долго. Подозреваю, в вашем документе есть еще что-то, что сбило настройку. А stop без вариантов останавливает все, и можно запускать заново.

nyols 27.06.2011 23:04

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


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