Js скрипт в цикле (с использованием Jquery)

EmptyR

Веб мастер
06.10.2010
164
0
26
Ростов-на-Дону
#1
Заказчик попросил реализовать следующую идею: автобус, перемещающийся вправо-влево. Вот мой код реализации:
Код:
<script type="text/javascript">
jQuery(document).ready(function(){
while (true){
jQuery("div#bus").animate({left: '+=600'}, 5000, 'linear', function(){
jQuery("div#bus").animate({'opacity':0}, 1000, 'linear', function(){
jQuery("div#bus").css('background-image', 'url(http://site.ru/bus_left.png)');
jQuery("div#bus").animate({'opacity':1}, 1000, 'linear');
jQuery("div#bus").animate({left: '-=600'}, 5000, 'linear');
jQuery("div#bus").animate({'opacity':0}, 1000, 'linear', function(){
jQuery("div#bus").css('background-image', 'url(http://site.ru/bus_right.png)');
jQuery("div#bus").animate({'opacity':1}, 1000, 'linear');
});
});
});
}
});
</script>
Вкратце: автобус перемещается в крайнюю правую позицию, исчезает, меняет картинку на повернутый влево, снова появляется, передвигается в левую крайнюю позицию, там снова исчезает, меняет картинку на повернутый вправо, снова появляется.

Почему то такой код не работает в цикле, точнее зависает, что не так?
 
A

AndrewSpider

Гость
#2
В ajax не силён, но не пробывали ставить не бесконечный цикл, а например таймер? setTimeout
 

EmptyR

Веб мастер
06.10.2010
164
0
26
Ростов-на-Дону
#3
В принципе решил проблему. Поделюсь с народом, как это делается...

Шаблон примерно таков:
Код:
<script type="text/javascript">
jQuery(document).ready(function(){
function runIt(){
//Некоторый JQuery код
jQuery("нечто").функция(параметр1, параметр2, параметр_n, runIt);
}
runIt();
});
</script>
Задумка в следующем, что весь наш код, который мы хотим повторять, можно вставить в функцию, например, с названием RunIt. Внутри функции вставляем свой код. В последней строчки кода, добавляем в качестве функции, вызываемой по завершению этой последней строчки - нашу функцию RunIt. Для того, чтобы началось выполнение этой функции, после описания функции RunIt вставляем её вызов.
Таким образом, при инициализации DOM макета (благодаря функции ready) инициализируется функция RunIt и когда она внутри себя находит вызов себя же, всё начинается с начала. И это без необходимости использовать цикл While.

P.S.: Спасибо хорошим людям, дали ссылку на пример: http://www.linkexchanger.su/jquery_effects/queue.html