Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подсчитать количество итераций setInterval() и вызвать clearInterval() (https://javascript.ru/forum/events/6858-podschitat-kolichestvo-iteracijj-setinterval-i-vyzvat-clearinterval.html)

yolka 27.12.2009 16:45

Подсчитать количество итераций setInterval() и вызвать clearInterval()
 
Возникла ситуация, когда нужно подсчитать количество итераций выполненых с помощью метод setInterval(); и вызвать clearInterval(); для определенного числового значения, при этом числовое значение будет вводить пользователь в элемент input.

т.е. в нижеприведенный код создает элементы, залитые произвольным цветом, нужно чтобы количество элементов ограничивалось конкретным числовым значением, а не бесконечным циклом. И каждый создаваемый элемент имел свой последовательный порядковый номер (рядом с кодом цвета в скобках слева от div.innerHTML = color).


function init() {
div = document.createElement("div");
div.style.cssText = "border: 1px solid #FFF; float: left; margin: 5px; padding: 0px 50px; width: 50px";
body = document.getElementById("body");
document.body.insertBefore(div, body);

for(i=0; i<100; i++){
	color= div.style.backgroundColor = '#' + Math.floor(Math.random() * (1000 - 0 + 1)) + 342;
	div.innerHTML = color;
     }   
}

setInterval('init()', 1000);
window.onload = init;


PS: любые конструктивные предложения

B~Vladi 27.12.2009 16:47

Цитата:

Сообщение от yolka
нужно подсчитать количество итераций выполненых с помощью метод setInterval(); и вызвать clearInterval();

Использовать для этого переменную не судьба? При каждом срабатывании интервала увеличивай и проверяй.

yolka 27.12.2009 17:01

B~Vladi
пропустить через цикл, выражения типа var interval = setInterval(); и потом его "хлопнуть" clearInterval(); при нужном значении?

PS: этот пример я сделала для саморазвития, т.к. изучаю совсем недавно этот язык и еще не совсем понимаю некоторые вещи..

subzey 27.12.2009 18:00

yolka,
все проще.
var iterationCount = 0;

function myTimer(){
	if (iterationCount++ < 10){
		clearInterval(myTimerIntervalId);
	};
	...
};

var myTimerIntervalId = setInterval(myTimer, 1000);

Gozar 28.12.2009 23:05

Цитата:

Сообщение от yolka (Сообщение 39350)
для определенного числового значения, при этом числовое значение будет вводить пользователь в элемент input.

Используйте лучше setTimeout, почему написано вот здесь:http://javascript.ru/blog/Andrej-Par...meout-interval


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