Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Задержка цикла


Автор: Xplod 27.6.2007, 17:47
Привет!
Вот код, как сделать задержку на определенное время перед каждой интерацией? 


Код

function go(ob){
    
        
                for(var i=0; i<1000; i++){
        document.getElementById(ob).height=i;
           }
}



Автор: Zeroglif 27.6.2007, 19:04
Xplod, нельзя сделать задержку перед итерацией, только если на каждом обороте делать специально некую холостую работу, что будет искусственно удерживать движок. Но так делать не нужно, стоит обратить внимание на метод setInterval и пересмотреть код.

Автор: Xplod 27.6.2007, 19:39
Цитата(Zeroglif @ 27.6.2007,  19:04)
Xplod, нельзя сделать задержку перед итерацией, только если на каждом обороте делать специально некую холостую работу, что будет искусственно удерживать движок. Но так делать не нужно, стоит обратить внимание на метод setInterval и пересмотреть код.

согласен, проверил на опыте движок начинает сильно тормозить и плавности нет
но вот как это сделать с setInterval, перепробовал все невыходит 

Автор: Zeroglif 27.6.2007, 19:45
Цитата(Xplod @  27.6.2007,  19:39 Найти цитируемый пост)
перепробовал все невыходит

Что конкретно не выходит? Примеры проб, плиз.  smile 

Автор: Xplod 27.6.2007, 20:14
Код

function go(ob){
    
        
                for(var i=0; i<1000; i++){
               document.getElementById(ob).height=i;
               setInterval(go('ob'), 1000);  
           }
}

Автор: Zeroglif 27.6.2007, 20:52
Xplod, 

нет, setInterval исполняет некие действия через определённый промежуток времени, не нужно 1000 раз вызывать этот метод, 1-ого раза достаточно smile  , простейший дурацкий пример, чтобы понять логику:

Код

//-> типа некий счётчик
var x = 1;

//-> вызов - эй, движок, если не сильно занят, то будешь каждую секунду выполнять функцию f
//-> результат вызова сохраню в переменной, чтобы потом можно было оставновить всё это дело
var y = setInterval(f, 1000);

function f(){
    //-> если что-то там по условию..., то останавливаю и выхожу
    if (x > 5) {
        clearInterval(y);
        return;
    }
    //-> то, что происходит ежесекундно (в данном примере это будет видно в консоли firebug-а)
    console.log(x++);
}

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