Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работают цункции (https://javascript.ru/forum/misc/3645-ne-rabotayut-cunkcii.html)

Иванов Иван 12.05.2009 12:40

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

Kolyaj 12.05.2009 12:52

А где код?

Иванов Иван 12.05.2009 13:08

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);
	}

Kolyaj 12.05.2009 13:25

Не знаю, в этом ли дело, но в setTimeout'ах функциям не передается последний аргумент.

Иванов Иван 12.05.2009 13:29

Да, в этом косяк был), спасибо!

x-yuri 12.05.2009 16:01

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


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