Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.06.2016, 18:03
Новичок на форуме
Отправить личное сообщение для refrom Посмотреть профиль Найти все сообщения от refrom
 
Регистрация: 25.06.2016
Сообщений: 2

не срабатывает clearInterval
Добрый день!

Написал функцию, которая анимирует картинку типа прогрессбар.
function fancy_load(n) {
	$('#loaderImage').css({display: "block"});
	var i=0;
	function timer() {
	    $('#loaderImage').css({backgroundPosition: "-" + 128*i + "px 0px"});
	    i++; 	
	}
	var intervalID = setInterval(timer, 30); 

	if (n == 'f'){
	    intervalID = clearInterval(intervalID);
	} 
}


Обращаюсь к ней 2 раза. Первый при нажатии на кнопку, второй после загрузки необходимой информацией уже с переменной, при наличии которой должна сработать clearInterval
$(".add_goods_button, .edit_good").click(function(){
		fancy_load();
		$.post("functions_orders.php", {
			action:"add_goods" 
		}, 
		function(data) {

			$("#div_goods_right").html(data);
			$(".lable_art_off").click(function(){
				var art = $(this).attr("id");
				newGoods(art);
		});
			fancy_load("f");
		});
		
	});


clearInterval не срабатывает. Потом посмотрел, что intervalID меняется при повторном обращении. дописал "костыль" что бы он не менялся (присвоил ему постоянный номер). Все равно не срабатывает.

Подскажите как правильно поправить код, что бы при повторном обращении к функции с переменной n = 'f' срабатывала clearInterval.
Ответить с цитированием
  #2 (permalink)  
Старый 25.06.2016, 18:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

refrom,

intervalID обьявите вне функции
Ответить с цитированием
  #3 (permalink)  
Старый 25.06.2016, 18:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

refrom,
var intervalID;
function fancy_load(n) {
	$('#loaderImage').css({display: "block"});
	var i=0;
	function timer() {
	    $('#loaderImage').css({backgroundPosition: "-" + 128*i + "px 0px"});
	    i++;
	}
	if (n == 'f'){
	    clearInterval(intervalID);
	}
    else intervalID = setInterval(timer, 30);
}
Ответить с цитированием
  #4 (permalink)  
Старый 25.06.2016, 18:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

refrom,
а лучше так
var intervalID;
function fancy_load(n) {
        clearInterval(intervalID);
	$('#loaderImage').css({display: "block"});
	var i=0;
	function timer() {
	    $('#loaderImage').css({backgroundPosition: "-" + 128*i + "px 0px"});
	    i++;
	}
    	if (n != 'f'){
    intervalID = setInterval(timer, 30);
	}
}
Ответить с цитированием
  #5 (permalink)  
Старый 25.06.2016, 18:40
Новичок на форуме
Отправить личное сообщение для refrom Посмотреть профиль Найти все сообщения от refrom
 
Регистрация: 25.06.2016
Сообщений: 2

Спасибо большое. Действительно сработало
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ClearInterval не срабатывает m1lk1way Общие вопросы Javascript 5 27.12.2015 17:14
clearInterval срабатывает только со второго раза nikolayseo Firefox/Mozilla 3 08.12.2014 19:25
onclick срабатывает со 2 раза в ie djonA Общие вопросы Javascript 19 25.03.2013 01:07
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Нажатие по дате в календаре срабатывает только со второго клика afr0 Events/DOM/Window 4 31.10.2012 13:39