Как сделать сортировку на сайте html
Перейти к содержимому

Как сделать сортировку на сайте html

  • автор:

Как организовать кнопки сортировки, как на картинке

введите сюда описание изображения

Всем привет, что-то не пойму как лучше сверстать и сделать кликабельными кнопки сортировки, как на данном скриншоте. Namе и Percentagе получаются связанными радио баттонами, то есть можно выбрать что-то одно — либо Name , либо Percentage .

Отслеживать
1,783 13 13 серебряных знаков 19 19 бронзовых знаков
задан 20 окт 2016 в 15:56
user3319778 user3319778
307 5 5 серебряных знаков 12 12 бронзовых знаков
У Вас уже есть какой-нибудь код для наглядности?
20 окт 2016 в 16:04

мне б в целом идею подсказать я бы сам написал просто пока не очень понимаю как правильно сделать, я так понимаю это через радио батон делается при этом его стилизовать нужно и повесить событие которое будет срабатывать на onSelected — вроде так?

20 окт 2016 в 16:06

Не обязательно радио. Вам же нужно сортировать в обе стороны — по возрастанию и убыванию, а как Вы с радио это сделаете, если он УЖЕ selected?

20 окт 2016 в 16:08
20 окт 2016 в 16:26

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Треугольники можно сделать с помощью css. Хранить состояние с помощью checkbox (еще можно зарегистрировать для него событие, чтобы отлавливать нажатие). Для добавления стрелок использовать :before и :after псевдоклассы. Привязать нажатие на стрелочки можно, применив псевдоклассы к ‘label’, который ссылается на checkbox по id .

В этом варианте можно обойтись без скриптов для переключения состояния стрелочек, однако, мне потребовалось два дополнительных псевдокласса для переключения.

Возможно, вам подойдет этот вариант.

$('#stateInput').change(function() < console.log('This value is now: ' + $(this).prop('checked')); >)
div < font-size: 20px; >.arrows < position: relative; cursor: pointer; >#stateInput < display: none; >#stateInput + .arrows:after < content: ' '; position: absolute; left: 10px; bottom: -16px; border: 10px solid transparent; border-top: 10px solid green; border-width: 12px 7px; >#stateInput:checked + .arrows:after < content: ' '; position: absolute; left: 10px; bottom: -16px; border: 10px solid transparent; border-top: 10px solid gray; border-width: 12px 7px; >#stateInput + .arrows:before < content: ' '; position: absolute; left: 10px; bottom: 12px; border: 10px solid transparent; border-bottom: 10px solid gray; border-width: 12px 7px; >#stateInput:checked + .arrows:before
 Some text 

Добавлено
Cо стилизацией под кнопку

$('#stateInput').change(function() < console.log('This value is now: ' + $(this).prop('checked')); >)
.button < position: relative; font-size: 20px; text-decoration: none; display: inline-block; border: 1px solid green; color: green; >.button:active < color: gray; background: #eee; >.button > .arrows < position: relative; cursor: pointer; display: block; padding: 8px 10px; padding-right: 30px; >.button > input < display: none; >#stateInput + .arrows:after, #stateInput + .arrows:before < content: ' '; position: absolute; right: 10px; border: 10px solid transparent; >#stateInput + .arrows:after < bottom: -6px; border-top: 10px solid green; border-width: 12px 7px; >#stateInput + .arrows:before < top: -6px; border-bottom: 10px solid gray; border-width: 12px 7px; >#stateInput:checked + .arrows:before < border-bottom-color: green; >#stateInput:checked + .arrows:after

Сортировка данных таблицы

Готовые JavaScript скрипты для сайтов. W3Schools на русском

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

Внимание! Изменение кода скрипта может повлечь его неработоспособность!

Скопируйте приведённый ниже на странице код и вставьте перед кодом таблицы на веб-странице (обычно между и , хотя можно и между и — но только ПЕРЕД таблицей с данными).

Подключение внешнего скрипта

Также нужны две картинки (изображения) в виде стрелок, которые бы указывали на тип проведенной сортировки конкретного столбца — файл «arrowdown.gif» (картинка сортировки вниз) и файл «arrowup.gif» (картинка сортировки вверх). Образцы картинок в папке «img» прилагаются в архиве и могут быть заменены Вами на любые другие с сохранением имени файла и папки.

В список классов стилей обязательно добавьте описания, параметры которых (цвет, шрифт и отступы) можно редактировать (но их названия редактировать нельзя!):

Код таблицы стилей:

/* Код таблицы стилей */
table.sort border-spacing:0.1em;
margin-bottom:1em;
margin-top:1em
>

/* ячейки таблицы */
table.sort td border:1px solid #ccc;
padding:0.3em 1em
>

/* заголовки таблицы */
table.sort thead td cursor:pointer;
cursor:hand;
font-weight:bold;
text-align:center;
vertical-align:middle
>

/* заголовок отсортированного столбца */
table.sort thead td.curcol background-color:#999;
color:#fff
>

Так должна выглядеть сортируемая таблица. Здесь налагаются очень жесткие требования по правильности её оформления. Все дополнительные команды, открывающие и закрывающие теги должны присутствовать. Необходимо указать теги (шапка таблицы) и (основная часть таблицы). Обычно их мало кто использует, но здесь эти теги обязательны! Шапка таблицы также обязательна в указанной форме.

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

Код таблицы с данными

Имя поля 1

Имя поля 2 Имя поля 3 Имя поля 4 Имя поля 5

Кузьменко Иван Кузьмич

студент ХПИ

название сайта

1984 г. рожд.

мужск.

Зеленский Владимир Александрович

безработный

название сайта

1978 г. рожд.

мужск.

Сидоров Сидор Сидорович

безработный

название сайта

1899 г. рожд.

мужск.

Александрова Александра Александровна

ребенок

нет сайта

2020 г. рожд.

женск.

Шимпанзе Путинка

обезьяна

зоопарк

1950 г. рожд.

ХЛО

Результат:

Нажмите на шапку любого столбца, и он будет отсортирован.

Имя поля 1 Имя поля 2 Имя поля 3 Имя поля 4 Имя поля 5
Кузьменко Иван Кузьмич студент ХПИ Білокуракинський портал 1984 г. рожд. мужск.
Зеленский Владимир Александрович безработный president.gov.ua 1978 г. рожд. мужск.
Сидоров Сидор Сидорович безработный Microsoft.com 1899 г. рожд. мужск.
Александрова Александра Александровна ребенок нет сайта 2020 г. рожд. женск.
Шимпанзе Путинка обезьяна зоопарк 1950 г. рожд. ХЛО

Javascript сортировка товаров по цене

Подскажите как реализовать сортировку по цене. Выбираю по ClassName .appartments-item__price’. Получаю массив. Сортировать методом sort . Тут уже выдает ошибку что unexpected token < на строке prices.sort(a, b). А как потом сослаться на .appartments-item , чтобы карточки выстроились по новому? Это же тоже надо учитывать при сортировке?

document.querySelector('.sorting__price').onclick = function() < let prices = document.getElementsByClassName('.appartments-item__price'); prices.sort(a, b) < if (a >b) return -1; if (a < b) return 1; if (a == b) return 0; >; >;
 

Студия №44

5 000 000 руб
Свободно Забронировано

Однокомнатная №666

16 000 000 руб
Свободно Забронировано

Отслеживать
14.6k 6 6 золотых знаков 36 36 серебряных знаков 71 71 бронзовый знак
задан 8 ноя 2018 в 20:02
Dave Garrow Dave Garrow
139 1 1 серебряный знак 9 9 бронзовых знаков
Даже и приблизительно не должно работать
8 ноя 2018 в 23:28
Тег на странице может быть только в единственном экземпляре. Так же как теги ,
9 ноя 2018 в 5:53
@Air это не так. Footer также можно вкладывать в section и в atricle
9 ноя 2018 в 7:06
Ну-Ну. можно так можно.
9 ноя 2018 в 13:52

@Air почему нельзя? Если в документации сказано, что можно, то почему нет? Если вы думайте, что теги footer и header сделали чтобы верх и них страницы обрамлять, то вы ошибаетесь.

9 ноя 2018 в 14:38

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

document.querySelector('.sorting__price').addEventListener("click", () => < const elements = document.querySelectorAll('.appartments-item'); const sorted = [. elements].sort((a, b) => < const priceElA = a.querySelector(".appartments-item__price"); const priceElB = b.querySelector(".appartments-item__price"); const getPrice = (el) =>parseInt(el.innerHTML.replace(/ /g, "")); return getPrice(priceElA) - getPrice(priceElB); >); const resultEl = document.querySelector(".results-container"); resultEl.innerHTML = null; sorted.forEach(el => resultEl.appendChild(el)); >);
.results-container
 

Однокомнатная №666

16 000 000 руб
Свободно Забронировано

Студия №44

5 000 000 руб
Свободно Забронировано

Если игнорировать семантику HTML с несколькими обернутыми в , то чисто JS должен быть примерно таким:

  1. Event listeners лучше всего добавлять с помощью addEventListener , так как при этом Вы не удаляете остальные listeners, как в случае el.onclick = func
  2. Если взялись использовать querySelector , то используйте его везде и не смешивайте с getElement методами без лишней необходимости. Разницы (почти) никакой, вопрос в читабельности.
  3. Когда Вы получаете елементы после выборки, они не являются массивом, а являются HTMLCollection, следовательно не имеют методов массивов, таких как: forEach , map , sort , etc. Чтобы добавить их, достаточно использовать деструктуризацию [. elements] .
  4. Как правильно заметил @dev_null — sort принимает один аргумент, функцию, определяющую порядок сортировки., поэтому читайте документацию.

Поиск, сортировка и фильтры для списков в HTML

Простой мини-скрипт List.js размером 7 КБ добавляет интерактивности маркированным спискам в HTML. С помощью скрипта можно сделать удобный поиск, сортировку, редактирование списка с добавлением или удалением новых элементов (например, адресная книга на странице) и т.д. Чем-то напоминает Chosen, только там модифицировались выпадающие списки.

List.js — обычный JavaScript, который не требует jQuery, работает без проблем во всех браузерах. Пару примеров см. здесь и здесь.

List.js опубликован под открытой лицензией MIT.

Например, вот функция создания нового списка на веб-странице по нажатию кнопки пользователем.

var options = < item: 'hacker-item' >; var values = [ < name: 'Jonny', city:'Stockholm' >, < name: 'Jonas', city:'Berlin' >]; var hackerList = new List('hacker-list', options, values);

Кнопки для поиска и сортировки в списке.

var options = < valueNames: [ 'name', 'city' ] >; var hackerList = new List('hacker-list', options);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *