Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 02.12.2019
Сообщений: 2

Сортировка выпадающего списка на сайте

02.12.2019, 12:30. Показов 3776. Ответов 4

Студворк — интернет-сервис помощи студентам
День добрый, помогите пожалуйста сделать сортировку выпадающего списка по алфавиту при загрузке веб-страницы (в двух списках first__sort и second__sort). Скрипт сортировки находится в отдельном файле .js. Если получится то без jQuery. Думал сделать через массив и sort.

Элемент кода HTML:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html>
  <head>
    <title>Antiviruses</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="style.css">
    <link rel="stylesheet" type="text/css" href="fonts.css">
    <script src="script_sort.js"></script>
  </head>
  <body>
      <ul class="MainMenu" charset="utf-8">
        <li><a href="index.html">Main</a></li>
        <li>
          <a href="#">Items</a>
          <ul id="first__sort">
            <li><a href="Kaspersky.html">Kaspersky</a></li>
            <li><a href="AIDTest.html">AIDTest</a></li>
            <li><a href="MCAffe.html">MCAffe</a></li>
            <li><a href="NOD32.html">NOD32</a></li>
            <li><a href="AVG.html">AVG</a></li>
          </ul>
          <script src="script_sort.js"></script>
        </li>
        <li><a href="#">Sources</a>
          <ul id="second__sort">
            <li><a href="https://www.kaspersky.ru/">Kaspersky</a></li>
            <li><a href="https://www.av-test.org/en/">AIDTest</a></li>
            <li><a href="https://www.mcafee.com/ru-ru/index.html">MCAffe</a></li>
            <li><a href="https://www.esetnod32.ru/">NOD32</a></li>
            <li><a href="https://www.avg.com/ru-ru/homepage#pc">AVG</a></li>
          </ul>
        </li>
        <li><a href="#">E-mail</a></li>
        <li><a href="#">Last</a></li>
      </ul>
  </body>
</html>
Элемент кода CSS:
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.MainMenu li {
  float:left;
  background: #2F4F4F;
  width: 140px;
  list-style: none;
  margin-left: auto;
  margin-right: auto;
}
 
.MainMenu a {
  text-decoration: none;
  display: block;
  padding: 15px;
  color: #000000;
  font-weight: bold;
}
 
#active a, .MainMenu li:hover > a {
  background: #808080;
  color: #ffffff;
  font-weight: normal;
}
 
.MainMenu ul {
  visibility: hidden;
  padding: 0;
  position: absolute;
}
 
.MainMenu li:hover > ul {
  visibility: visible;
  position: relative;
}
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2019, 12:30
Ответы с готовыми решениями:

Сортировка выпадающего списка
Вот подскажите, есть функция выборки папок, нужно этот список чтоб выводил отсортированным по алфавиту. скажите так я сделал или нет: ...

Сортировка выпадающего списка
Друзья, кто знает как сортировать выпадающий список (сам список, который отображается при нажатии маленькой стрелочки)? У меня получается...

Сортировка выпадающего списка
Подскажите, в представлении создал выпадающий список, никак не могу найти информацию по сортировке в списка по алфавиту? &lt;div...

4
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
02.12.2019, 14:43
День добрый.
Самый элегантный вариант:
- Необходимые данные держать в массиве. (И насколько понимаю, у двух разных списков одинаковые надписи?)
- Отсортировать массив как угодно.
- На основании массива сгенерить два похожих списка.

Если потребуется еще раз отсортировать, то предыдущие шаги просто повторить.
1
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
04.12.2019, 12:52
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function sortUL(tag) {
    let li = document.querySelectorAll(tag);
    if(li.length !== 0) {
        let newArr = []; // new array
        li.forEach((el) => newArr.push(el.querySelector("a").innerHTML[0])); // добавляем первую букву
        newArr.sort(); // сортируем
        newArr.forEach(newArrSymb => {
            li.forEach((el) => (newArrSymb[0] === el.querySelector("a").innerHTML[0]) ? el.parentNode.append(el) : false);
        });
        window.console.log(newArr);
        // sortUL(`${tag} ul > li`);
    }
  }
 
  // sortUL("ul#gl > li"); // Сортируем весь ul
  sortUL("ul#first__sort > li");
  sortUL("ul#second__sort > li");
Добавлено через 3 минуты
С сортировкой всего списка.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!doctype html>
<ul id="gl" class="MainMenu" charset="utf-8">
  <li><a href="index.html">Main</a></li>
  <li>
    <a href="#">Items</a>
    <ul id="first__sort">
      <li><a href="Kaspersky.html">Kaspersky</a></li>
      <li><a href="AIDTest.html">AIDTest</a></li>
      <li><a href="MCAffe.html">MCAffe</a></li>
      <li><a href="NOD32.html">NOD32</a></li>
      <li><a href="AVG.html">AVG</a></li>
    </ul>
    <!-- <script src="script_sort.js"></script> -->
  </li>
  <li><a href="#">Sources</a>
    <ul id="second__sort">
      <li><a href="https://www.kaspersky.ru/">Kaspersky</a></li>
      <li><a href="https://www.av-test.org/en/">AIDTest</a></li>
      <li><a href="https://www.mcafee.com/ru-ru/index.html">MCAffe</a></li>
      <li><a href="https://www.esetnod32.ru/">NOD32</a></li>
      <li><a href="https://www.avg.com/ru-ru/homepage#pc">AVG</a></li>
    </ul>
  </li>
  <li><a href="#">E-mail</a></li>
  <li><a href="#">Last</a></li>
</ul>
<script>
  "use strict";
  function sortUL(tag) {
    let li = document.querySelectorAll(tag);
    if(li.length !== 0) {
        let newArr = []; // new array
        li.forEach((el) => newArr.push(el.querySelector("a").innerHTML[0])); // добавляем первую букву
        newArr.sort(); // сортируем
        newArr.forEach(newArrSymb => {
            li.forEach((el) => (newArrSymb[0] === el.querySelector("a").innerHTML[0]) ? el.parentNode.append(el) : false);
        });
        // window.console.log(newArr);
        sortUL(`${tag} ul > li`);
    }
  }
 
  sortUL("ul#gl > li"); // Соритруем весь ul
  // sortUL("ul#first__sort > li");
  // sortUL("ul#second__sort > li");
</script>
1
 Аватар для arcmag
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
04.12.2019, 14:13
JavaScript
1
2
3
4
5
[...document.querySelectorAll(`#first__sort, #second__sort`)].forEach(it => {
  const items = [...it.querySelectorAll(`li`)].sort((a, b) => a.textContent < b.textContent ? -1 : 1);
  it.innerHTML = ``;
  items.forEach(item => it.appendChild(item))
});
1
0 / 0 / 0
Регистрация: 02.12.2019
Сообщений: 2
07.12.2019, 13:20  [ТС]
Всем спасибо за ответы, но коллективным разумом студенческого совета решили, что лучше сделаем на отдельной странице список с темами и статьями, а то список в выплывающем меню будет очень большой)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2019, 13:20
Помогаю со студенческими работами здесь

Выбор пункта из выпадающего списка при заполнении формы на сайте
Подскажите пожалуйста как осуществить выбор пункта из выпадающего списка через компонент webBrowser тоесть программа на сайте и...

Обновление выпадающего списка в форме в зависимости от выпадающего списка выше
Есть 3 таблицы (1,2,3) Первая и вторая связаны между собой через таблицу 3. Есть 3 выпадающих списка в Form1. Нужно что бы во втором...

Конкретные значения из выпадающего списка на форме в зависимости от значения другого выпадающего списка
Добрый день! Помогите решить вопрос: есть база данных (прилагается) и в ней на форме хочу, чтобы во втором выпадающем списке можно было...

Изменение содержимого простого списка при апдейте выпадающего списка
Добрый день! Суть моей просьбы о помощи такова: На форме (пока) расположен выпадающий список с определенными значениями и ниже...

Отбор записей динамического списка по выбранному значению отбора в виде выпадающего списка
Здравствуйте, имеется справочник с реквизитами: ДатаНачала, Продолжительность, Стоимость, Преподаватель. Нужно добавить выпадающий список,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru