| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Перебор Div'ов и их последовательный показ |
| Автор: crang 16.9.2010, 14:35 | ||||
Доброго времени суток. Задача такова: есть текстовые файлы, их содержимое извлекается в div'ы средствами пхп:
как результат, внутри div'а novosti-ban создаются div'ы один над другим, по количеству текстовых файлов, каждому присваивается id - порядковый номер. Далее средствами JavaScript необходимо поочередно показать на какой-то интервал каждый div (должно выйти что-то типа баннера):
Проблема в том, что слои отображаются все одновременно и скрываются так-же, никак не соображу - как заставить их делать это последовательно, по одному? Заранее спасибо. |
| Автор: bars80080 16.9.2010, 15:05 | ||
| ясен пень одновременно. вы же цикл сразу прогоняете, создаёте кучу таймеров, половина которых срабатывает через 5 секунд, остальные через 10. последовательная работа во времени никогда не задаётся через цикл. это надо запомнить сделайте что-нибудь такого заместо последнего:
|
| Автор: crang 17.9.2010, 11:02 | ||
никак не могу понять химию процесса
представляю себе это так, в случае с len=4(это при двух вложенных div): время (сек) событие 0 создается таймер setInterval('qw()', 10000), ф-я qw() сработает через 10 сек 5 ничего не происходит 10 выполняется ф-я qw(), создаются 2 таймера setTimeout(function() { show(count); },5000) и setTimeout(function() { hide(count); },10000) 15 срабатывает таймер setTimeout(function() { show(count); },5000), выполняется ф-я show(count), появляется div1 20 срабатывает таймер setTimeout(function() { hide(count); },10000), выполняется ф-я hide(count) - div1 скрыт, выполняется ф-я qw(), создаются 2 таймера setTimeout(function() { show(count); },5000) и setTimeout(function() { hide(count); },10000) 25 срабатывает таймер setTimeout(function() { show(count); },5000), выполняется ф-я show(count), появляется div2 30 срабатывает таймер setTimeout(function() { hide(count); },10000), выполняется ф-я hide(count) - div2 скрыт, выполняется ф-я qw(), создаются 2 таймера setTimeout(function() { show(count); },5000) и setTimeout(function() { hide(count); },10000) ....... если что-то не так представляю - поправьте, пожалуйста, уверен что-то не так, потому как на практике выглядит следующим образом - www.ktm.net.ua (на фоне синего баннера, справа внизу test и test1) |
| Автор: bars80080 17.9.2010, 14:11 |
| оно работает или нет? |
| Автор: crang 17.9.2010, 16:34 | ||
bars80080, уже работает ) спасибо за наводку и консультации. рабочий вариант:
|
| Автор: bars80080 17.9.2010, 19:36 | ||
| тогда можно и описать. а то чего описывать, если не работает? собственно, уже сам всё и описал. это правильнее читается так: выполняется анонимная функция, которая запускает функцию show(0) с аргументом 0. так как в момент первого выполнения qw(), count равен 0 далее тоже самое, меняется только count напрямую записать
локализуя код в функцию (пусть даже и анонимную), мы откладываем исполнение до вызова этой функции |