Как сделать такую функцыю...
Здраствуйте!
У меня есть функция которая прорисовует 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(), то дополнительных функций нужно очень и очень много!!! |
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('алерт')}); это называется анонимная функция |
Я знаю этот метод... А можно ли так делать чтобы после функции это все делалось?
Например чтобы было на подобие: 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() как то переделать? |
5 за орфографию =)
Чтобы alert выполнялся во время функции вы не думали засунуть его в функцию? И вообще что за бред. Как он может выполнятся во время функции если стоит он позже? |
http://sms9.byethost5.com/test.html
Тут пример! Как зделать чтоб алерт был после виполнения функцыы!!!! А не вовремя!! |
Используйте задержку во времени
|
А лучше используйте событие загрузки.
|
А что куда загружается-то О_о?
|
Ну у него в функции что-то там двигаетсо. И alert должен появитсо только когда это окончательно передвинетсо.
То есть когда функция завершит свою работу. |
Цитата:
Цитата:
|
Я еще толком не читал про события но где-то боком слышал о onload. Который срабатывает когда что-то полностью загружено(выполнено).
|
Для #6: Ну если я точно не знаю сколько времени должно пройти!
В этой функции да можно вычислить через которое время она завершиться но для других подобных НЕТ! 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);} Если б не функция setTimeout то можно било бы сделать так: function anim(ob, x, dx, t,callback){ if(t<0) callback(); document.getElementById(ob).style['top']=x+dx; return anim(ob, x, dx, t-1)} Но при таком раскладе элемент прорисован сначала и в конце своего движения!!!! Есть ли такая функция в js аналог sleep() в php? sleep() в PHP делает паузу при выполнении скрипта... Если есть то она поможет в этом вопросе! Жду Ваших ответом!!!! |
При чем тут onload! Я же не загружаю ничего....
|
Вам Gvozd уже написал. Поправить немного надо было, всего-то:
function anim(ob, x, dx, t,callback) { if(t<0) return callback(); document.getElementById(ob).style['top']=x+dx; setTimeout(function(){anim(ob, x, dx, t-1, callback)}, 10); } anim('div',1,1,25,function(){alert('алерт')}); Niar, так если боком слышали, зачем советуете? Тем более что onload тут как не пришей ... рукав. |
Виноват. Надо было сначала уточнить точное действие события.
|
Да я понял про использования callback! Я знал етод метод но не то я хотел...
например нужно мне переместить див с верха экрана в низ, выполнить некоторою функцию, потом переместить его назад и выполнить новою функцию... если использовать посоветованный вами метод код будет иметь вид: anim(ob, 150, 2, 15, function(){alert('Привет!'); anim(ob2, 100, -2, 13, function(){alert(2); Ище какаято функцыя...; anim(ob, 150, 2, 7)})}) А мне б хотелось что би не все так запутано било и это же имело такой вид: anim(ob, 150, 2, 15); alert('Привет!'); anim(ob2, 100, -2, 13); alert(2); Еще какая то функция...; anim(ob, 150, 2, 7); Так мне кажется намного проще!!! Скажет кто то по поводу функцию аналог sleep() в php? |
Вот аналоги php функций в JS http://javascript.ru/php
Про sleep ни чего нету |
Реализовавать самому. Можно почитать исходники jQuery, к примеру, там есть query.
|
Цитата:
Цитата:
function downUp(downCallback, upCallback) { anim(bla, bla, function() { downCallback(); anim(bla, bla, function() { upCallback(); }) }); } downUp(function() { // ... }, function() { // ... }); sleep в JavaScript нет и не надо. Хотите писать на JS -- привыкайте к асинхронному коду. |
Niar,
мне кажется, sms9 может быть вполне украинцем sms9, Если Вам нужно, чтобы код выполнился сразу же после завершения потока, используйте setTimeout: function testInner(){ alert('Тут мы стартовали'); setTimeout(function(){alert('Отложенный запуск')}, 0); alert('Тут мы закончили'); } function testOuter(){ alert('Запускаем внутреннюю функцию'); testInner(); alert('Вышли из внутренней функции'); } testOuter(); |
Часовой пояс GMT +3, время: 09:07. |