2015-12-06 1 views
-2

У меня есть цикл for, который работает, но когда он закончен, я хочу, чтобы он начал снова и повторил этот процесс!Javascript for loop (Как заставить его повторяться навсегда)

for (var i = 0; i != 3; i = i + 1) { 
    (function(index) { 
     setTimeout(function() { 
      document.getElementById(location[index]).style.background = color[index];    
     }, 1000 * index); 
     })(i); 
} 
+1

.......... 'while' ................ – adeneo

+0

Но что вы действительно ищете, чтобы заставить его работать с этим таймаутом, является рекурсивная функция – adeneo

+0

@adeneo Пример? – coolbotic

ответ

0

Вы не хотите использовать какую-либо циклическую структуру, как for или while. Вместо этого просто создайте функцию, которая вызывается с индексом для ее запуска, а затем внутри обратного вызова, она увеличивает индекс и рекурсивно вызывает ту же функцию. когда индекс достигнет 3, установите его обратно до 0 перед рекурсивным вызовом.

function cycle(index) { 
    setTimeout(function() { 
     document.getElementById(location[index]).style.background = color[index]; 

     index++; // Increment the index 

     if (index >= 3) { 
      index = 0; // Set it back to `0` when it reaches `3` 
     } 

     cycle(index); // recursively call `cycle()` 

     //cycle(++index % 3); 
    }, 1000); 
} 

cycle(0); 

используется оператор % быстрый способ, чтобы убедиться, что он получает набор обратно 0 на рекурсивном вызове.

+0

Испытайте это утром спасибо! – coolbotic

+0

Было бы разумнее использовать 'setInterval'. Я не думаю, что такой ответ стоит сделать вики сообщества. –

+0

@MarcoBonelli: Я делаю все свои ответы на wiki сообщества. 'setInterval' будет работать, но я бы не сказал *« гораздо больше смысла »*. Только два разных способа сделать то же самое. –

0

вы можете использовать второй для цикла. во втором цикле напишите, сколько раз вы хотите повторить первый цикл. Также вы можете использовать цикл while.

0

Вставить начальный цикл цикла в другой цикл, чтобы цикл повторялся определенное количество времени.

Например (если число является number раз вы хотите, чтобы ваш цикл повторить):

for (var i = 0; i < number; i++) { 
    for (var i = 0; i != 3; i = i + 1) { 
    (function(index) { 
     setTimeout(function() { 
     document.getElementById(location[index]).style.background = color[index];    
     }, 1000 * index); 
    })(i); 
    }  
}