Как отсортировать только некоторые строки таблицы? ⇐ Jquery
-
Гость
Как отсортировать только некоторые строки таблицы?
У меня есть следующая таблица:
И я хочу отсортировать строки с именами и возрастом по их статьям -> Мой код JavaScript для сортировки выглядит следующим образом:
Сейчас он странным образом сортирует имена и статьи. Моя идея заключалась в том, чтобы каким-то образом соединить вложенные строки с исходной строкой, чтобы она сортировалась (перемещалась) вместе с исходной строкой, но я не знаю, как это сделать.
Как мне к этому подойти?
const getCellValue = (tr, idx) => tr.children[idx].innerText || tr.дети[idx].textContent; константный компаратор = (idx, asc) => (a, b) => ((v1, v2) => v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? v1 – v2: v1.toString().localeCompare(v2) )(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx)); document.querySelectorAll('.th-sortable').forEach(th => th.addEventListener('click', (() => { const tbody = document.getElementsByClassName('js-sortable-table').item(0); Array.from(tbody.querySelectorAll('tr:nth-child(n)')) .sort(компаратор(Array.from(th.parentNode.children).indexOf(th), this.asc = !this.asc)) .forEach(tr => tbody.appendChild(tr)); }))); Имя Фамилия Возраст Джон Картер 44 Статья Тема Дата 4 Музыка 12.06.2019 7 Свободное время 12.08.2019 8 Хобби 12.09.2019 Николь Одипи 21 Статья Тема Дата 11 Мода 12.09.2019
У меня есть следующая таблица:
И я хочу отсортировать строки с именами и возрастом по их статьям -> Мой код JavaScript для сортировки выглядит следующим образом:
Сейчас он странным образом сортирует имена и статьи. Моя идея заключалась в том, чтобы каким-то образом соединить вложенные строки с исходной строкой, чтобы она сортировалась (перемещалась) вместе с исходной строкой, но я не знаю, как это сделать.
Как мне к этому подойти?
const getCellValue = (tr, idx) => tr.children[idx].innerText || tr.дети[idx].textContent; константный компаратор = (idx, asc) => (a, b) => ((v1, v2) => v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? v1 – v2: v1.toString().localeCompare(v2) )(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx)); document.querySelectorAll('.th-sortable').forEach(th => th.addEventListener('click', (() => { const tbody = document.getElementsByClassName('js-sortable-table').item(0); Array.from(tbody.querySelectorAll('tr:nth-child(n)')) .sort(компаратор(Array.from(th.parentNode.children).indexOf(th), this.asc = !this.asc)) .forEach(tr => tbody.appendChild(tr)); }))); Имя Фамилия Возраст Джон Картер 44 Статья Тема Дата 4 Музыка 12.06.2019 7 Свободное время 12.08.2019 8 Хобби 12.09.2019 Николь Одипи 21 Статья Тема Дата 11 Мода 12.09.2019
Мобильная версия