Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не выполнять ф-цию второй раз, пока она не проработает до конца. (https://javascript.ru/forum/dom-window/8599-ne-vypolnyat-f-ciyu-vtorojj-raz-poka-ona-ne-prorabotaet-do-konca.html)

peter888 04.04.2010 00:55

Не выполнять ф-цию второй раз, пока она не проработает до конца.
 
Есть картинка:
<img id="up" src="image/r_off.png" border="0" width="58" height="162" alt="" onclick="next_but();">
Есть скрипт:
<script language="JavaScript">
var sliding = false;
var k = 0;

function next_but() {
	sliding = clearInterval(sliding);
	k = 0;
	sliding = setInterval(function() {
		if( k < 261 ) {
			k = k + 9;
			document.getElementById('t1').scrollLeft = document.getElementById('t1').scrollLeft + 9;
		} else {
			sliding = clearInterval(sliding);
		}
	}, 5 );
}
</script>
Он работает примерно 1-3 сек.
Когд я кликаю по картинке, то выполняеться next_but(). Если кликать с интервалом бодьше 3-4 сек, то все ок, но если кликать быстро, например два раза, то результат не тот.
Мне просто надо, чтоб переменная k обезательно дошла до 261, лишь только тогда можно выполнить эту ф-цию опять.
Как запретить виполнение ф-ции второй раз, пока она не проработает до конца?
Спасибо.

Aetae 04.04.2010 05:24

Как-то так. Вообще можно сделать функцию красивей, но лень думать в такое время.)
sliding=0;
function next_but() {
if(!sliding)
	{
	k = 0;
	sliding = setInterval(function() {
		if( k < 261 ) {
			k+=9;
			document.getElementById('t1').scrollLeft+=9;
		} else {
			clearInterval(sliding);
			sliding=0;
		}
		}, 5 );
	}
}

peter888 04.04.2010 13:04

Спасибо, шот я не смог сам догадатся вчера..., спасибо!


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