Цикл не работает.
Есть функция Animate
Её тело: $(id_for_animate).animate({ marginLeft: left_space }, 200, 'linear', Add(1)); она анимирует один элемент DOMа после вызывает функцию ADD(1) как видно с параметром. Add() выполняет действия по записи данных о значении свойст некоторых элементах DOMа. Если в конце выполнения функцию поставить вызов Animate() то возникает ошибка. То есть Animate() -> Add() -> Animate() -> Add() -> Animate() сделать нельзя. В общем вопрос, как сделать последовательный вызов функций одна за другой без привязки ко времени? Или SetInterval единственный выход? П.С. Надеюсь я понятно все изложил. Спасибо за любую помощь. |
Вопроса не понял, но в коде ошибка. Функция add вызывается сразу. Оберните её
function addCallback() { Add(1); } $(id_for_animate).animate({ marginLeft: left_space }, 200, 'linear', addCallback); |
Ошибка возникает из-за того, что функции не завершаются и при этом выполняются внутри друг друга, иначе говоря, переполняется стек вызовов.
Проблему можно решить следующим образом: в конце Add вызывайте функцию Animate так: setTimeout(Animate, 0); Тогда функция Animate выполнится только после того, как выполнится функция Add. |
zebra,
Я так понял, что функция Add(1) выполняется, если убрать оттуда вызов Animate. Можно предположить, что определение функции Add выглядит так: function Add(val) { return function () { /*do something with val*/ Animate(); }; } |
Дополнение к теме.
Спасибо за ответы. Уточню то что нужно:
Нужно что бы по заверщению анимации над обьекто программа провела некоторые действия и после запустила туже анимацию. Например. Функция Анимации движет блок, закончила и вызвала функцию Тратата, а по завершению функции Тратата снова вызывалась функция Анимации и так далее. Функция Тратата срабатывает до завершения функции Анимации. Как решить? |
Всем спасибо, читал мимо ушей ))
$(id_for_animate).animate({ marginLeft: left_space }, 200, 'linear', function(){ Play() }); $(id_for_animate).animate({ marginLeft: left_space }, 200, 'linear', Play() ); Это не одно и тоже. Всем спасибо. |
Часовой пояс GMT +3, время: 10:44. |