Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
08 Мар 2023
3 мин
795

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

Узнайте, как легко добавить сортировку таблиц на вашем сайте с помощью JavaScript и jQuery, всего за три простых шага!

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

Шаг 1: Создание таблицы

Для начала создадим простую HTML-таблицу с данными, которые мы хотим сортировать. Вот пример таблицы:

<table id="myTable">
  <thead>
    <tr>
      <th>Имя</th>
      <th>Возраст</th>
      <th>Город</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Алексей</td>
      <td>25</td>
      <td>Москва</td>
    </tr>
    <tr>
      <td>Иван</td>
      <td>30</td>
      <td>Санкт-Петербург</td>
    </tr>
    <!-- Добавьте больше строк с данными по аналогии -->
  </tbody>
</table>

Шаг 2: Добавление JavaScript и jQuery

Чтобы добавить сортировку, нам понадобится подключить библиотеку jQuery. Добавьте следующий код перед закрывающим тегом </body>:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

Теперь мы можем использовать jQuery для сортировки нашей таблицы. Создайте новый файл с именем table-sort.js и добавьте следующий код:

$(document).ready(function() {
  $('th').click(function() {
    var table = $(this).parents('table').eq(0);
    var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));
    this.asc = !this.asc;
    if (!this.asc) {
      rows = rows.reverse();
    }
    table.children('tbody').empty().html(rows);
  });
});

function comparer(index) {
  return function(a, b) {
    var valA = getCellValue(a, index);
    var valB = getCellValue(b, index);
    return $.isNumeric(valA) &amp;&amp; $.isNumeric(valB) ? valA - valB : valA.localeCompare(valB);
  };
}

function getCellValue(row, index) {
  return $(row).children('td').eq(index).text();
}

Подключите этот файл к вашему HTML-документу перед закрывающим тегом </body>:

<script src="table-sort.js"></script>

Шаг 3: Проверка работы сортировки

Теперь у вас есть всё необходимое для сортировки таблицы. Откройте ваш сайт в браузере и нажмите на заголовки столбцов таблицы. Вы увидите, что данные сортируются в порядке возрастания и убывания.

😉 Вот так просто можно добавить сортировку таблиц на вашем сайте с помощью jQuery. Надеюсь, эта информация поможет вам в веб-разработке. Удачи в обучении!

Если вы хотите углубить свои знания в области веб-разработки, рекомендую обратиться в школу для получения профессионального образования.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
для использования jQuery?","answers":["Скрипт с заголовком","Скрипт jQuery","Скрипт с CSS стилем"],"correct":1},{"question":"Какой элемент HTML используется для создания заголовков таблицы?","answers":["","",""],"correct":2},{"question":"Что происходит при нажатии на заголовок таблицы?","answers":["Таблица обновляется","Данные сортируются","Сайт перезагружается"],"correct":1},{"question":"Какой метод jQuery используется для определения, что элементы DOM готовы к манипуляции?","answers":["ready()","load()","init()"],"correct":0}]}`; const $wrapper = jQuery('.media-article-test__main'); const { data: testData } = JSON.parse(test_data_json); let current = 0; function showForm() { const input = document.querySelector(".media-article-test__form .media-article-test__form-input--phone"); const iti = window.intlTelInput(input, { initialCountry: "ru", strictMode: true, showSelectedDialCode: true, allowDropdown: false, utilsScript: "https://fastly.jsdelivr.net/npm/intl-tel-input@21.2.7/build/js/utils.js", }); jQuery.validator.addMethod("phoneValid", function () { return iti.isValidNumber() }) const $form = jQuery('.media-article-test__form'); $form.css('display', ''); $form.on('submit', (e) => { e.preventDefault(); }) $form.validate({ rules: { phone: { required: true, phoneValid: true }, email: { required: true } }, messages: { phone: { required: "Телефон обязателен", phoneValid: "Введите корректный телефон" }, email: { required: "Почта обязательна", email: "Введите корректный email" } }, focusInvalid: false, submitHandler: async function (form) { const $phone = $form.find('input[name="phone"]').get(0); const $email = $form.find('input[name="email"]').get(0); const $name = $form.find('input[name="name"]').get(0); const utm_campaign = encodeURIComponent(window.location.href.split('?')[0]) const formData = new FormData(); $name.value && formData.append("name", $name.value); formData.append("email", $email.value); formData.append("phone", window.intlTelInputGlobals.getInstance($phone).getNumber()); formData.append("queryParams", `utm_source=skypro_blog&utm_campaign=${utm_campaign}`); formData.append("sourceKey", "skypro_blog_article_test"); formData.append("funnel", "televox"); formData.append("televox_import_group_id", "9111"); formData.append("autoscoring", true); $form.addClass("media-article-test__form--loading"); try { await fetch('https://api.sky.pro/api/v1/lead/tilda', { method: 'POST', body: formData, }); jQuery('.media-article-test__success').css('display', ''); try { ym(69215599, "reachGoal", "marketing_lead"); ym(69215599, "reachGoal", "send_any_form"); } catch (e) {} // $modalWrap.css("display", "none"); } catch (e) { // $modal.removeClass("spm-voting__modal--loading"); // jQuery(".spm-voting__form-submit-error").css("display", "block"); jQuery('.media-article-test__form-title').text('Ошибка выполнения запроса!'); } finally { $form.removeClass("media-article-test__form--loading"); jQuery('.media-article-test__form-submit').css('display', 'none'); jQuery('.media-article-test__form .iti').css('display', 'none'); jQuery('.media-article-test__form-input[name="name"]').css('display', 'none'); jQuery('.media-article-test__form-input[name="email"]').css('display', 'none'); } } }) const $testBlock = jQuery('.media-article-test__main'); $testBlock.css('filter', 'blur(10px)'); $testBlock.css('background', 'none'); $testBlock.css('pointer-events', 'none'); $form.css('display', ''); jQuery('.media-article-test').css('min-height', '360px'); jQuery('.media-article-test__title').css('display', 'none'); jQuery('.media-article-test__subtitle').css('display', 'none'); } function render() { const { question, answers } = testData[current] $wrapper.html(`
Вопрос ${current + 1}: ${question}
${current + 1} / ${testData.length}
${answers.map(ans => ` `).join('')}
`); jQuery('.media-article-test__answer').click(() => { jQuery($wrapper).fadeOut(300, function() { if (current < testData.length - 1) { current++; render() } else { showForm() } jQuery(this).fadeIn(300); }); }) } render() })

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