Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   поочередный вывод элементов массива (https://javascript.ru/forum/misc/27238-poocherednyjj-vyvod-ehlementov-massiva.html)

seosovest 06.04.2012 14:34

поочередный вывод элементов массива
 
Подскажите, пожалуйста, как реализовать показ элементов массива по очереди? (т.е., сначала первый, через 2 секунды второй и т.д.)
Вот что имеется:

// есть массив $tElems из 16 элементов

for (var i = 0; i<16; i++){
      var cft = $tElems[i];
      $(cft).animate({opacity: 1},600).delay(2000).stop().animate({opacity: 0},400).delay(2000).stop();
	}


Только здесь появляются и исчезают все элементы одновременно, а надо по одному и с интервалом...

ps: я новичок, прошу больно не бить)

Pavel M. 06.04.2012 15:33

в строке перед
.animate({opacity: 1},600)

поставьте, например
.delay(1000 * i)

seosovest 06.04.2012 16:07

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 167476)
$('selector').css({opacity: 0}).each(function(i){
  $(this).delay(1000 * i).animate({opacity: 1});
})

Спасибо за ответ)
Но даже так все объекты выдаются одновременно :-?

seosovest 06.04.2012 16:09

Цитата:

Сообщение от Pavel M. (Сообщение 167475)
в строке перед
.animate({opacity: 1},600)

поставьте, например
.delay(1000 * i)

Спасибо за совет)
Все равно не получается :cray:

seosovest 06.04.2012 17:48

Есть ли какие-либо иные методы, кроме .delay()?
Нельзя как-нибудь отложить выполнение показа последующего элемента?

Да, и интервал показа для всех элементов равный)) (к примеру, 2 секунды)

Pavel M. 07.04.2012 09:42

Цитата:

Сообщение от seosovest (Сообщение 167485)
Спасибо за совет)
Все равно не получается :cray:

ниже ваш код, только количество элементов до 5 сократил и убрал лишние .stop() - не нужны

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>

<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>
<p>Hello World</p>

<script>
	var $tElems = $('p');
	$tElems.css({opacity: 0});

	for (var i = 0; i < 5; i++) {
		var cft = $tElems[i];
		$(cft).delay(1000 * i) // добавили задержку
		   .animate({opacity: 1},600).delay(2000).animate({opacity: 0},400); // .stop() убрали
	}
</script>

seosovest 09.04.2012 10:41

Цитата:

Сообщение от Pavel M. (Сообщение 167583)
ниже ваш код, только количество элементов до 5 сократил и убрал лишние .stop() - не нужны

Ааа)))) Круто! Все работает)) :dance:
Спасибо огроменное!!!

seosovest 09.04.2012 10:47

to Maxmaxmахimus:

Спасибо большущее!!! Это то, что я искала!)


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