Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   один setInterval внутри другого setInterval-а (https://javascript.ru/forum/misc/26696-odin-setinterval-vnutri-drugogo-setinterval.html)

dadli 18.03.2012 18:02

один setInterval внутри другого setInterval-а
 
приветствую

есть две таимер, один основи, котори виполняется через кажди 3 секунд. еше есть втарои внутренни таимер, ето внутренни таимер запускается при кожди обновлении основого таимера, ето внутренни таимер вичисляет цифри от 1 до 100 очен бистро и ждёт обнавленя основого таимера, что снова вичислить от 0 до 100.
проблема в том, например я открил несколко вкладки в браузере, если я смотрю на страницу, где етот код випоняется, то всо ок, но если я переклучаю (пересматрю) другие несколкие вкладки, и потом вернус на странице где код виполняется, то уже внутренни таимер не коректно работает, то есть работает без останавлении, уже не ждёт обневланю основого таимера. почему так происходит? вот код

function dve_schetchik () {
	i = 0;
	c = 1;
	// основи таимер
	setInterval( function goo() {
		if (i > 4) {
			i = 0;
		}
		document.getElementById('id_1').innerHTML = i;
		i++;
		// внутренни таимер
		vnutrenni = setInterval( function fast() {
			if (c < 100) {
				c++;
			    document.getElementById('id_2').innerHTML = c;
			}
			else {
				clearInterval(vnutrenni);
				c = 1;
			}
		},10);
		//конец внутренни таимер
	},3000);
	//конец основи таимер
}


<body onLoad="dve_schetchik();">
<div id="id_1">0 </div>
<div id="id_2">0 </div>

Pavel M. 18.03.2012 21:35

почитайте http://learn.javascript.ru/settimeou...B2-setinterval

вы запускаете внутренний setInterval не убедившись, что он уже закончился

поставьте хотя бы перед строкой
vnutrenni = setInterval( function fast() {

проверку
if (c !== 1) return;

dadli 19.03.2012 00:23

Pavel M.,
спасибо, очен помагли

Keeper 20.03.2012 16:12

Еще ссылочку на учебник русского языка, класса этак 5го дайте ...
Извините не здеражался ... )

vasa_c 20.03.2012 17:22

Keeper, ну уж шутки про знание русского языка пишите без ошибок.

Keeper 20.03.2012 18:16

На эмоциях, простите )


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