Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.05.2009, 12:40
Иванов Иван
 
Сообщений: n/a

Не работают цункции
Здаствуйте у меня в скрипте при выполнении нужного условия, вызываются две функции, рекурсивнные, вызывают сами себя по setTimeout пока не достигнут нужный результат, функции меняют ширину элемента и его позицию left (чтобы он располагался в центре окна) дело в том что функции по задумке должны работать одновременно и выполнять анимацию(увеличение ширины и уменьшение left, кпримеру), но этого не происходит, сначала работает одна, потом другая, чем воспользоваться чтобы одновременно менять оба этих стиля??
Ответить с цитированием
  #2 (permalink)  
Старый 12.05.2009, 12:52
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А где код?
Ответить с цитированием
  #3 (permalink)  
Старый 12.05.2009, 13:08
Иванов Иван
 
Сообщений: n/a

function width_max(elem, start, end, step, speed) {
	if(!wa) {isResize['width_max'] = true; wa = true;}
    var i = start;
	i+=step;
	elem.style.width = i+'px';
	if(i <= end) setTimeout(function() {width_max(elem, i, end, step)},speed);
	else {isResize['width_max'] = false; tb = false;}
}
function left_left(elem, start, end, step, speed) {
	if(!ll) {isResize['left_left'] = true; ll = true;}
    var i = start;
	i-=step;
	elem.style.left = i+'px';
	if(i >= end) setTimeout(function() {left_left(elem, i, end, step)},speed*2);
	else {isResize['left_left'] = false; tb = false;}
}

function width_min(elem, start, end, step, speed) {
	if(!wi) {isResize['width_min'] = true; wi = true;}
    var i = start;
	i-=step;
	elem.style.width = i+'px';
	if(i >= end) setTimeout(function() {width_min(elem, i, end, step)},speed);
	else {isResize['width_min'] = false; tb = false;}
}
function left_right(elem, start, end, step, speed) {
	if(!lr) {isResize['left_right'] = true; lr = true;}
    var i = start;
	i+=step;
	elem.style.left = i+'px';
	if(i <= end) setTimeout(function() {left_right(elem, i, end, step)},speed*2);
	else {isResize['left_right'] = false; tb = false;}
}

if(gl_width<w)  {
		width_max(elem, parseInt(gl_width), w, step, speed);
		left_left(elem, parseInt(gl_left), l, step, speed);
	}
	else if(gl_width>w) {
		width_min(elem, parseInt(gl_width), w, step, speed);
		left_right(elem, parseInt(gl_left), l, step, speed);
	}
Ответить с цитированием
  #4 (permalink)  
Старый 12.05.2009, 13:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Не знаю, в этом ли дело, но в setTimeout'ах функциям не передается последний аргумент.
Ответить с цитированием
  #5 (permalink)  
Старый 12.05.2009, 13:29
Иванов Иван
 
Сообщений: n/a

Да, в этом косяк был), спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 12.05.2009, 16:01
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а почему бы не вызывать одну функцию по setTimeout, в которой увеличивать left и width?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Effect.SlideDown/Effect.SlideUp не работают в середине страницы dansury Prototype & script.aculo.us 1 11.01.2009 12:16
Проблема с селекторами, одни работают - другие нет Deee_Miles jQuery 4 19.12.2008 23:29
не работают функции при их вызове(не отображаются кнопки) badfilin Общие вопросы Javascript 0 08.04.2008 20:18