Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Статус выполнения ЦИКЛА!


Автор: MCNet 12.7.2004, 18:42
Знае-ли ктоньть как грамотно реализовать сабж.
необходимо реализовать подобное: for(i=0;i<100;i++) { MyLabel.value=i } при этом не помогает settimeout и setinterval. Кроме того эти функции КРАЙНЕ не желательно использовать. пробовал в другом окне показывать статус выполнения. тоже не помогло.

Если кто сталкивался - подскажите как надо, плз!

Автор: Sardar 12.7.2004, 21:59
Если честно я не понял что нужно сделать? Через промежтуки времени устанавливать MyLabel.value и так 100 раз? Или пауза между каждой итерацией? Тогда чем setInterval не подошел?
Опиши проблему(и опробованные решения) подробней.

Автор: <Spawn> 12.7.2004, 22:45
MCNet Чем тебе не нравится setInterval? Вот маленький пример:

Код
<script language='JavaScript'>
 var tmrHandle;
 function progress()
 {
    if (document.all.prg.innerText == 100)
    {
       clearInterval(tmrHandle);
       return;
    }
    document.all.prg.innerText++;
 }
<script>
<body onload="tmrHandle = setInterval(progress, 1000); ">
 <span id="prg">0</span>
</body>

Автор: MCNet 13.7.2004, 14:54
Прошу прощения за смутное объяснения проблеммы. Вот подробное описание.

Есть некий цикл. Задача: отображать каждый этап выполнения.
Проблема: когда запущен цикл - окно IE не отвечает.

Можно-ли выполнять циклы так, чтобы они не влияли на основную форму, в которой во время выполнения цикла можно было бы наблюдать статус выполнения - на какой стадии в данный момент находится выполнение.


Например for(i=0;i<9000;i++) { MyLabel.value="Сейчас i равняется "+i; }

/*
Для чего это мне:
Через подобный цикл в базу данных через ActiveX заносится массив
нужно знать сколько данных занесено и сколько осталось.
по другому заносить нельзя из-за спицыфики ПО
*/

Автор: Sardar 13.7.2004, 15:30
Нужно использовать setInterval(см. пример <Spawn>). Также я приводил пример как сделать паузу спомощью очереди: http://forum.vingrad.ru/index.php?showtopic=22258&st=0&#entry151254

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)