05.10.2014, 13:34
|
|
Кандидат Javascript-наук
|
|
Регистрация: 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 автоматически?
|
|
05.10.2014, 14:52
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от qwe88
|
автоматически
|
А вручную - слишком трудно?
__________________
В личку только с интересными предложениями
|
|
05.10.2014, 15:23
|
Аспирант
|
|
Регистрация: 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.
|
|
05.10.2014, 16:49
|
|
Профессор
|
|
Регистрация: 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>
<? }
__________________
В личку только с интересными предложениями
|
|
05.10.2014, 17:25
|
Аспирант
|
|
Регистрация: 02.09.2014
Сообщений: 77
|
|
danik.js,
Ага, а если html генерится на паскале, то через pascal_huy еще легче сделать. Ну это ладно, ты скажи, нахрена загружать сервак? Ты учти еще, что все это сказывается на ожидании ответа другими клиентами. Чем больше ты вычисляешь, тем дольше они курят бамбук. А в случае однопоточного языка, ты вообще заблокируешь все запросы.
|
|
05.10.2014, 17:32
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
petya жизнь тебя сильно обидела, если ты не слышал про кэширование. Впрочем и без него, сколько ms займет вызов array_chunk и итерация по результату?
__________________
В личку только с интересными предложениями
|
|
05.10.2014, 17:43
|
Аспирант
|
|
Регистрация: 02.09.2014
Сообщений: 77
|
|
danik.js,
Сообщение от danik.js
|
Впрочем и без него, сколько ms займет вызов array_chunk и итерация по результату?
|
Это зависит от того, сколько клиентов будут ждать. И на скольких страницах подобная обработка. Умножь результат на сумму ожидающих. Если у тебя многопоточный сервер, его работа замедлится пропорционально числу запросов, а если нет,возможно последний клиент будет ждать неделю.
|
|
05.10.2014, 18:00
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
То есть ты уверен, что этот самый вызов array_chunk - будет самым тормозным в скрипте, генерирующем html, верно? И что на высоконагруженных сайтах кэш никогда не используют, чтобы снизить нагрузку, верно?
__________________
В личку только с интересными предложениями
|
|
05.10.2014, 18:04
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Ок, все вопросы снимаю. Посмотрел твой профиль и понял что передо мной гуру программирования )))
__________________
В личку только с интересными предложениями
|
|
05.10.2014, 18:06
|
Аспирант
|
|
Регистрация: 02.09.2014
Сообщений: 77
|
|
danik.js,
Хватит бестолковится. Кеш не серебрянная пуля, что-то можно закешировать, что-то нет. Кеширование само по себе отжирает ресурсы. Насчет остального, я вижу, ты ни хрена не понял. Хинт: количество запросов в единицу времени.
Да и, безотносительно всей этой воды, аксиома: то что можно вынести на клиент, НИКОГДА не следует вычислять на сервере.
|
|
|
|