Javascript.RU

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

работа с clearInterval
День добрый
написал я вот такой код, он занимается тем, что выпихивает построчно текст из-за рамки так чтобы его было видно. Код работает и текст летает. вот сам код.

var nth=1;
				var i=1;
				function leftText(){
					$('ul.slides>li:nth-child('+nth+')>article>div>ul>li:nth-child('+i+')').animate({
						'margin-left':'500px'
					},'slow');					
					if(i==12){
					  clearInterval(timerId);					  			
					}
				}
				var timerId = setInterval(function(){leftText(); i++}, 300);


по сути он находит список и поочередно совает его элементы. но вот в чем вопрос: верно ли я закончил выполнение setInterval? так как, когда я поставил после clearInterval alert, то он мне нескончаемое количество сообщений вывел. можно ли заканчивать циклическое выполнение функции внутри функции которую вызывает эта функция?
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2015, 15:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,206

Сообщение от Nifler
можно ли заканчивать циклическое выполнение функции внутри функции которую вызывает эта функция?
Бивас, тест! (с)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	var i=1;
	function test(){
		$('#info').text(i);					
		if(i==12){
		  clearInterval(timerId);					  			
		}
	}
	var timerId = setInterval(function(){test(); i++}, 300);
});
</script>
</head>
<body>
<div id="info"></div>
</body>
</html>

Таки можно!
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2015, 15:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Возможно проверочный алерт был засунут не туда куда нужно.)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
    var i=1;
    function test(){
        $('#info').text(i);                
        if(i==12){
          alert('конец'); 
          clearInterval(timerId);                              
        }
    }
    var timerId = setInterval(function(){test(); i++}, 300);
});
</script>
</head>
<body>
<div id="info"></div>
</body>
</html>
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2015, 15:57
Аспирант
Отправить личное сообщение для Nifler Посмотреть профиль Найти все сообщения от Nifler
 
Регистрация: 29.09.2013
Сообщений: 37

разобрался, я проверял изменение DOM вечной циклической функцией, которая постоянно повторяла запуск всех этих моих функций. и она клепала запуски алерта. теперь пытаюсь понять как работает MutationObserver...
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2015, 16:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Nifler, а что там непонятного - в обсервер стекуется история изменения документа без блокировки чтоб не тормозить обработку, и функция вызывается в ближайший свободный промежуток вываливая всё что накопилось.

//Хотя всё равно обидно, что от MutatonEvents полностью отказались, для юзерскриптов часто полезная фича была, а теперь приходится расширения писать в некоторых случаях.
__________________
29375, 35

Последний раз редактировалось Aetae, 14.05.2015 в 16:28.
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2015, 04:29
Аспирант
Отправить личное сообщение для Nifler Посмотреть профиль Найти все сообщения от Nifler
 
Регистрация: 29.09.2013
Сообщений: 37

Сообщение от Aetae Посмотреть сообщение
Nifler, а что там непонятного - в обсервер стекуется история изменения документа без блокировки чтоб не тормозить обработку, и функция вызывается в ближайший свободный промежуток вываливая всё что накопилось.

//Хотя всё равно обидно, что от MutatonEvents полностью отказались, для юзерскриптов часто полезная фича была, а теперь приходится расширения писать в некоторых случаях.
для меня js это магия, большая великая магия. я ничего не понимаю как оно работает и почему оно работает, и нет времени нормально взяться выучить. эти функции в функциях просто выносят мозг и как работает обсервер теоретически я прочел, и понимаю то, что тут написано, но на практике реализовать не смог. если есть желание офигеть с кода, то вот:
(function($,andefined){	
	$(document).ready(function(){
		$("#mitka").css("margin-left","0");
		function newSlide(){
			for (var i=1; i<10; i++){
				var margin=$("#mitka").css("margin-left");
				if($(".slides>li:nth-child("+i+")").css("display")=="list-item"){
					if(i+"px"!=margin){
						$("#mitka").css("margin-left",i);
						$('.slides>li:nth-child('+i+')>article>div>ul>li').css("margin-left","-500px");		
						var nth=i;
						var j=1;
						function leftText(){
							$('ul.slides>li:nth-child('+nth+')>article>div>ul>li:nth-child('+j+')').animate({
								'margin-left':'0px'
							},'slow');					
							if(j==12){
							  //clearInterval(timerId);	
							}
						}		
						
						timerId = setInterval(function(){leftText(); j++}, 200)			
					
						$(".li_slyde").removeClass("li_slyde");
						var nextI=i+1;
						$(".uk-navbar-nav>li:nth-child("+nextI+")").addClass("li_slyde");
					}			
				}else{
				}				
			}
		}			
		setInterval(newSlide, 200);		
	})
})(jQuery)

это код, который высовывает текст на слайде, когда слайд листается. http://poli.molodost-dolgoletie.com/ вот тут он работает.
могу сказать что #mitka создан исключительно для того, чтобы запоминать в каком слайде мы находимся, так как я так и не смог это запомнить в переменной. остальное сделано при помощи такого же бреда.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересная работа для JavaScript-разработчика в Москве от 120 000 linna9 Работа 1 21.01.2014 23:59
работа менеджером georgi Работа 1 29.03.2013 14:18
Программист JavaScript постоянная удалённая работа. moisha Работа 4 26.10.2011 19:52
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06
clearInterval и setInterval из разных локаций. Bakuryu Events/DOM/Window 6 27.07.2008 22:45