Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.10.2014, 13:34
Аватар для qwe88
Кандидат Javascript-наук
Отправить личное сообщение для qwe88 Посмотреть профиль Найти все сообщения от qwe88
 
Регистрация: 14.06.2014
Сообщений: 137

Разбиение подменю на ul
Добрый день!
Подскажите, пожалуйста, такую штуку:
Как разделить каждый столбик меню на ul.
Пример:

Главный пункт: Пункт 1
От него идет подменю:
<ul (первый столбик)>
<li><a href="/">Подпункт 1</li>
<li><a href="/">Подпункт 2</li>
<li><a href="/">Подпункт 3</li>
</ul>
<ul (второй столбик)>
<li><a href="/">Подпункт 4</li>
<li><a href="/">Подпункт 5</li>
<li><a href="/">Подпункт 6</li>
</ul>
И т.д.

Как мне сделать так, что бы каждые три пункта закрывались в ul автоматически?
Ответить с цитированием
  #2 (permalink)  
Старый 05.10.2014, 14:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от qwe88
автоматически
А вручную - слишком трудно?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 05.10.2014, 15:23
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

str='\
<li><a href="/">Item 1</li> \
<li><a href="/">Item 2</li> \
<li><a href="/">Item 3</li> \
<li><a href="/">Item 4</li> \
<li><a href="/">Item 5</li> \
<li><a href="/">Item 6</li> \
'

re=/<(li)>(.*?)\1>/gi

arr=str.match(re)
counter=0
for(i=0; i<=arr.length; i++){
if((counter++)===3){
arr.splice(i, 0, "</ul><ul>")
counter=0
}
}
str="<ul>"+arr.join("")
str=str.replace(/.{4}$/, "")
alert(str)

Последний раз редактировалось petya, 05.10.2014 в 15:47.
Ответить с цитированием
  #4 (permalink)  
Старый 05.10.2014, 16:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Если html генерится в php, то через array_chunk очень просто сделать

<?
// допустим в $items у нас все пункты приходят
$chunks = array_chunk($items, 3);

$foreach ($chunks as $chunk) { ?>
    <ul>
    <? foreach ($chunk as $item) { ?>
        <li><?= $item->text ?></li>
    <? } ?>
    </ul>
<? }
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 05.10.2014, 17:25
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

danik.js,
Ага, а если html генерится на паскале, то через pascal_huy еще легче сделать. Ну это ладно, ты скажи, нахрена загружать сервак? Ты учти еще, что все это сказывается на ожидании ответа другими клиентами. Чем больше ты вычисляешь, тем дольше они курят бамбук. А в случае однопоточного языка, ты вообще заблокируешь все запросы.
Ответить с цитированием
  #6 (permalink)  
Старый 05.10.2014, 17:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

petya жизнь тебя сильно обидела, если ты не слышал про кэширование. Впрочем и без него, сколько ms займет вызов array_chunk и итерация по результату?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 05.10.2014, 17:43
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

danik.js,
Сообщение от danik.js
Впрочем и без него, сколько ms займет вызов array_chunk и итерация по результату?
Это зависит от того, сколько клиентов будут ждать. И на скольких страницах подобная обработка. Умножь результат на сумму ожидающих. Если у тебя многопоточный сервер, его работа замедлится пропорционально числу запросов, а если нет,возможно последний клиент будет ждать неделю.
Ответить с цитированием
  #8 (permalink)  
Старый 05.10.2014, 18:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

То есть ты уверен, что этот самый вызов array_chunk - будет самым тормозным в скрипте, генерирующем html, верно? И что на высоконагруженных сайтах кэш никогда не используют, чтобы снизить нагрузку, верно?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 05.10.2014, 18:04
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ок, все вопросы снимаю. Посмотрел твой профиль и понял что передо мной гуру программирования )))
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 05.10.2014, 18:06
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

danik.js,
Хватит бестолковится. Кеш не серебрянная пуля, что-то можно закешировать, что-то нет. Кеширование само по себе отжирает ресурсы. Насчет остального, я вижу, ты ни хрена не понял. Хинт: количество запросов в единицу времени.

Да и, безотносительно всей этой воды, аксиома: то что можно вынести на клиент, НИКОГДА не следует вычислять на сервере.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прокручивающееся подменю evgh Events/DOM/Window 20 13.06.2011 16:32
Меню и подменю gta Ваши сайты и скрипты 2 20.03.2011 12:45
Горизонтальное меню с отображение нажатого подменю javascript jQuery 1 18.11.2010 23:44
Использование css свойства display для подменю Lex4e Общие вопросы Javascript 7 07.01.2010 22:02
Съезжающее вниз подменю Djony1987 jQuery 4 04.10.2009 08:20