Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Пауза выполнения кода на JS как Thread.sleep (https://javascript.ru/forum/server/12484-pauza-vypolneniya-koda-na-js-kak-thread-sleep.html)

JSBeginner 19.10.2010 20:23

Пауза выполнения кода на JS как Thread.sleep
 
Привет всем :)

Захотелось написать маленькое меню на JavaScript, но возникла проблема с div-ами, а точнее их заполнением. Я никак не пойму как сделать на JS так, чтобы div объект заполнялся построчно с паузой в 0,2 секунды например... Пробовал setInterval() итп , помещать в линейный код цикла, но не получается никакого эффекта :-E
Начал подумывать уже переложить это на сервер выполнение через Java, но не хочется как-то дизайнерский элемент перекладывать на Tomcat, так как такую задачу хорошо решать на клиенте...
Помогите плз как внедрить паузу в код на JS, чтобы точно работало :-?

B@rmaley.e><e 19.10.2010 20:41

Ну почитайте про анимацию.

subzey 19.10.2010 20:45

setInterval/setTimeout запускают код через какое-то время, но не приостанавливают работу скрипта.
Советую проникнуться документацией, благо, её достаточно.

JSBeginner 19.10.2010 21:07

Цитата:

Сообщение от subzey (Сообщение 74997)
setInterval/setTimeout запускают код через какое-то время, но не приостанавливают работу скрипта.
Советую проникнуться документацией, благо, её достаточно.

То, что остальной код к сожалению мимо выполняется - это я уже понял :( и меня это не радует, так как не пойму как тогда организовать линейность? Есть ли обходные вещи в таком случае?

JSBeginner 19.10.2010 21:11

проблему вы правильно поняли... мне нужно остановить выполнение кода, а потом продолжить через 0,2 сек например, чтобы получить эффект выезда строк итп... Но вот то, что весь остальной код функции мимо выполняется это очень как-то не удобно для получения нужного эффекта :( и пока я не понял как обойти этот нюанс... помогите понять плз

Kolyaj 19.10.2010 21:14

http://alljs.ru/articles/timeout/

JSBeginner 19.10.2010 21:29

Я вроде понимаю, но почему-то не получается :(

function driveOut(name)
{
for (index=0; index<5; index++)
{

window.setInterval('_onсlick('+name+','+index+')', 1000);
}
text="";
}

var n;
var text="";
var a=new Array();


function _onclick(name, index)
{
a[0]="<p style='margin-left: 10px;'>A</p>";
a[1]="<p style='margin-left: 10px;'>B</p> ";
a[2]="<p style='margin-left: 10px;'>C</p> ";
a[3]="  <p style='margin-left: 10px;'>D</p>";
a[4]="<p style='margin-left: 10px;'>E‹</p>";

if(n!=null){document.getElementById(n).innerHTML="";}

if(name!=n){

text=text+a[index];
document.getElementById(name).innerHTML=text;


}//end if


n=name;

}


Что я делаю не так? :-?

Kolyaj 19.10.2010 22:00

Читайте тексты по ссылке, они для того и писались, чтобы каждый раз одно и то же не объяснять.

JSBeginner 19.10.2010 22:06

Я их уже прочитал, но не получается почему-то...
Я хочу, чтобы итерация выполнялась с паузой, но почему-то вообще ничего не выполняется?
for (index=0; index<5; index++)
{
window.setInterval('_onсlick('+name+','+index+')', 1000);
}


уже в html самом Id все верно указано... Без интервала работает, но некрасиво получается - просто появляется список и все, а интересно, чтобы он построчно выезжал...

Kolyaj 19.10.2010 22:11

Странно вы читаете.

http://alljs.ru/articles/timeout/overview.html#nosleep
Цитата:

Многие начинающие в JavaScript разработчики путают принцип работы его таймеров с принципом работы имеющейся во многих языках функции sleep. sleep приостанавливает выполнение программы на определённый промежуток времени, после чего работа продолжается с того же места, где была остановлена. В JavaScript такое невозможно, по крайней мере в браузерном JavaScript.


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