Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать такую функцыю... (https://javascript.ru/forum/misc/7242-kak-sdelat-takuyu-funkcyyu.html)

sms9 22.01.2010 11:02

Как сделать такую функцыю...
 
Здраствуйте!
У меня есть функция которая прорисовует div елемент на страницы:
function anim(ob, x, dx, t){
if(t<0) return true;
document.getElementById(ob).style['top']=x+dx;
setTimeout(function(){anim(ob, x, dx, t-1)}, 10);}

Например у меня есть код который нужно выполнить:
function hhh(){
anim('div',1,1,25);
alert('алерт')
}

Как усовершенствовать функцию anim() чтобы alert('алерт') выполнилась после завершения функции прорисовки на не вовремя того как объект div перемещается по экрану!!!
Ну можно сделать от так:
function anim(ob, x, dx, t){
if(t<0) aaa();
document.getElementById(ob).style['top']=x+dx;
setTimeout(function(){anim(ob, x, dx, t-1)}, 10);}

function aaa(){alert('алерт')};

anim('div',1,1,25);

Но етот метод очень сложен, может можно как то проще всё это реализовать, потому что при использовании этого метода используется дополнительная функция aaa(). Ну а если нужно использовать большое количество функций anim(), то дополнительных функций нужно очень и очень много!!!

Gvozd 22.01.2010 11:31

function anim(ob, x, dx, t,callback){
if(t<0) callback();
document.getElementById(ob).style['top']=x+dx;
setTimeout(function(){anim(ob, x, dx, t-1)}, 10);}

anim('div',1,1,25,function(){alert('алерт')});

это называется анонимная функция

sms9 22.01.2010 11:42

Я знаю этот метод... А можно ли так делать чтобы после функции это все делалось?
Например чтобы было на подобие:
function hhh(){
var txt;
for(var i in document)
if(typeof(document[i])=='string') txt+=i+"="+document[i]+"<br>";
return txt}

//ну и теперь исполнение
hhh();
alert('алерт');

Здесь alert('алерт') выполняется после hhh(), а не вовремя!!!
Может можно функцию anim() как то переделать?

Niar 22.01.2010 13:13

5 за орфографию =)
Чтобы alert выполнялся во время функции вы не думали засунуть его в функцию?
И вообще что за бред. Как он может выполнятся во время функции если стоит он позже?

sms9 22.01.2010 15:16

http://sms9.byethost5.com/test.html
Тут пример! Как зделать чтоб алерт был после виполнения функцыы!!!! А не вовремя!!

Niar 22.01.2010 15:17

Используйте задержку во времени

Niar 22.01.2010 15:27

А лучше используйте событие загрузки.

e1f 22.01.2010 16:01

А что куда загружается-то О_о?

Niar 22.01.2010 16:02

Ну у него в функции что-то там двигаетсо. И alert должен появитсо только когда это окончательно передвинетсо.
То есть когда функция завершит свою работу.

e1f 22.01.2010 16:37

Цитата:

Сообщение от Niar (Сообщение 41537)
Ну у него в функции что-то там двигаетсо. И alert должен появитсо только когда это окончательно передвинетсо.
То есть когда функция завершит свою работу.

Цитата:

Сообщение от Niar (Сообщение 41522)
А лучше используйте событие загрузки.

Так каким боком тут некое "событие загрузки"? Ну и что это, все же?


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