Как сделать такую функцыю...
Здраствуйте!
У меня есть функция которая прорисовует 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, время: 08:14. |