Javascript.RU

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

setInterval заставить работать в цикле, как?
Как верно заставить работать setInterval в цикле? пробую вот так - не получается:

var a = 2,
    auto = {};

for(i=0; i<a; i++){
 auto[i] = setInterval(
  function(i){ 
   console.log('a='+i); 
  }(i)
  , 3000);
}


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

а так работают интервалы, но i всегда = 2 :
a = 2;
auto = {};

for(i=0; i<a; i++){
 auto[i] = setInterval(function(){ console.log('a='+i); }, 3000);
}

Последний раз редактировалось piraids, 10.03.2015 в 14:28.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2015, 15:47
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Обычно, когда задают такой вопрос, ответ заключается в логике задачи, которую вы скорее всего не правильно поняли.

Так вот, вопрос, зачем вам это? А точнее для чего такая конструкция?
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2015, 16:23
Аспирант
Отправить личное сообщение для piraids Посмотреть профиль Найти все сообщения от piraids
 
Регистрация: 20.08.2013
Сообщений: 88

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

вот хотел это все засунуть в цикл, чтобы меньше было кода

потому как дублируется все, за исключением id блока, времени интервала и пары параметров для функции
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2015, 17:45
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Попробуйте разобрать это и почитайте про замыкания.
<html>
	<head>
		<style>
			div {
				width: 50px;
				height: 50px;
				float: left;
				margin: 2px;
				background-color: #000000;
			}
		</style>
	</head>
	<body>
		<div></div>
		<div></div>
		<div></div>
		<div></div>
		<div></div>
		<div></div>
		<div></div>
		<script type="text/javascript">
			var elements		= document.getElementsByTagName('div'),
				options			= [
					{
						height		: 80,
						speed		: 100
					},
					{
						height		: 120,
						speed		: 200
					},
					{
						height		: 30,
						speed		: 300
					},
					{
						height		: 60,
						speed		: 500
					},
					{
						height		: 10,
						speed		: 400
					},
					{
						height		: 40,
						speed		: 600
					},
					{
						height		: 70,
						speed		: 700
					}
				],
				changeHeight 	= function(element, height) {
					element.offsetHeight == height ? element.style.height = '50px' : element.style.height = height + 'px';
				};
			
			for(var i = 0; i < elements.length; i++)
				(function(j){
					setInterval(function() {
						changeHeight(elements[j], options[j]['height']);
					}, options[j]['speed']);
				})(i);
		</script>
	</body>
</html>
__________________
.

Последний раз редактировалось Skipp, 10.03.2015 в 17:52.
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2015, 18:24
Аспирант
Отправить личное сообщение для piraids Посмотреть профиль Найти все сообщения от piraids
 
Регистрация: 20.08.2013
Сообщений: 88

Skipp,
спасибо, я не так вызывал анонимную функцию емае((( понял, остальное все как у Вас, работает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить работать среди php(wp) Takun Общие вопросы Javascript 0 10.12.2014 16:47
Необходимо заставить работать слайдбар kosite Javascript под браузер 1 07.08.2014 09:25
Как в цикле for переходить к следующей итерации после завершения предыдущей? FRIE jQuery 5 30.07.2014 19:03
Как заставить чтобы параметр обновлялся? Alexsher Общие вопросы Javascript 23 18.06.2014 22:05
Как заставить работать оперу и мозилу? SDone AJAX и COMET 6 25.02.2009 16:05