Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Сортировка меню по data (https://javascript.ru/forum/events/78270-sortirovka-menyu-po-data.html)

Максим Ученик 18.08.2019 04:51

Сортировка меню по data
 
Есть меню обычное статическое.
В нём есть data-num в разброс
Я хочу что бы пункты меню встали по порядку
Но у меня не получилось его отсортировать до конца но суть проблемы есть в песочнице и так же моя попытка это решить но не знаю на сколько это верно : https://codepen.io/topicstarter/pen/LYPZdZV

laimas 18.08.2019 05:36

Сначала такой вопрос - в реальности откуда берет сервер данные этого меню?

Максим Ученик 18.08.2019 05:40

Цитата:

Сообщение от laimas (Сообщение 511838)
Сначала такой вопрос - в реальности откуда берет сервер данные этого меню?

я только тренируюсь и пока это просто меню от руки и хотел бы научится сортировать его ... и так же я понимаю что можно и руками в html отредактировать

laimas 18.08.2019 06:01

Цитата:

Сообщение от Максим Ученик
пока это просто меню от руки

Пока, а далее что будет? Ведь трудно в современных реалиях предположить, что и в реальности у вас все будет статика, и вы будет ручками все на страницах прописывать. То есть, страницы будут динамическими, а контент для страниц храниться в большей его части в базе данных. И конечно эти данные будут иметь структуру типа: раздел -> подраздел -> страница. И все это будет добавляться/редактироваться через административный раздел.

Серверный скрипт, получая запросы от клиента, строит страницы, на которых всегда будет выводить меню, как подключаемый шаблон, например, шапки страниц. А зная в каком порядке нужно выводить элементы меню, данные для него сразу же и сортируются требуемым образом. Коли у вас данные для data-num и текст пунктов меню связаны, то данные для меню и нужно отсортировать по полю для data-num. То есть, например, пусть в базе данные для data-num находятся в поле под именем "data", а тексты в поле под именем "name". Серверный код делает запрос с сортировкой:

SELECT * FROM table_name ORDER BY data

и строит по извлеченным данным меню отсортированное по data-num.

На клиенте конечно же возникают ситуации, когда набор html элементов нужно отсортировать/отфильтровать, но меню это все-таки не тот набор, которым должен заниматься клиент. Другое дело, если бы сервер только отдавал клиенту массив данных для меню, а уже клиент по ним строил html код меню, тогда еще можно как-то оправдать такую сортировку. Но даже в этом случае серверу сподручнее сразу выполнить необходимую сортировку данных для меню.

Максим Ученик 18.08.2019 06:11

Цитата:

Сообщение от laimas (Сообщение 511840)
Пока, а далее что будет? Ведь трудно в современных реалиях предположить, что и в реальности у вас все будет статика, и вы будет ручками все на страницах прописывать. То есть, страницы будут динамическими, а контент для страниц храниться в большей его части в базе данных. И конечно эти данные будут иметь структуру типа: раздел -> подраздел -> страница. И все это будет добавляться/редактироваться через административный раздел.

Серверный скрипт, получая запросы от клиента, строит страницы, на которых всегда будет выводить меню, как подключаемый шаблон, например, шапки страниц. А зная в каком порядке нужно выводить элементы меню, данные для него сразу же и сортируются требуемым образом. Коли у вас данные для data-num и текст пунктов меню связаны, то данные для меню и нужно отсортировать по полю для data-num. То есть, например, пусть в базе данные для data-num находятся в поле под именем "data", а тексты в поле под именем "name". Серверный код делает запрос с сортировкой:

SELECT * FROM table_name ORDER BY data

и строит по извлеченным данным меню отсортированное по data-num.

На клиенте конечно же возникают ситуации, когда набор html элементов нужно отсортировать/отфильтровать, но меню это все-таки не тот набор, которым должен заниматься клиент. Другое дело, если бы сервер только отдавал клиенту массив данных для меню, а уже клиент по ним строил html код меню, тогда еще можно как-то оправдать такую сортировку. Но даже в этом случае серверу сподручнее сразу выполнить необходимую сортировку данных для меню.

я это всё понимаю, с php и выборкой у меня нету проблем, в данный момент у меня хромает javascript и хотел бы подтянуть/научиться именно ему, сортировкой и пока придумал себе именно такую задачу ...

laimas 18.08.2019 06:15

Ну тогда, коли ради "подтянуть" и речь о сортировке, то сделайте поиск по форму для "сортировка" и т.п., получите массу тем о сортировке как массивов/объектов, так и html наборов элементов, и "подтягивайтесь" на здоровье. :)

Максим Ученик 18.08.2019 06:20

Цитата:

Сообщение от laimas (Сообщение 511842)
Ну тогда, коли ради "подтянуть" и речь о сортировке, то сделайте поиск по форму для "сортировка" и т.п., получите массу тем о сортировке как массивов/объектов, так и html наборов элементов, и "подтягивайтесь" на здоровье. :)

если бы вы посмотрели бы в codepen то увидили бы что массив я уже отсортировал но само меню нет ....понимаете ? у меня проблема в сортировке меню

laimas 18.08.2019 06:31

А зачем сортировать массив? Я же писал - хотите понять/узнать как сортировать html набор, сделайте поиск, на форуме очень много таких вопросов на всякие разные случаи. Вот сразу же подобная тема, причем рони с завидным постоянством отвечает по много раз на такие вопросы. )

https://javascript.ru/forum/misc/678...-stranice.html

То есть сортируется сразу набор. Вы получили собственно карту индексов, по которым хотите отсортировать, отсортировали, а далее то надо сами элементы расставить по этой карте - appendChild(элемент).


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