Сортировка таблицы
document.querySelector('.prod_table').classList.add('table_sort');
document.addEventListener('DOMContentLoaded', () => {
const getSort = ({ target }) => {
const order = (target.dataset.order = -(target.dataset.order || -1));
const index = [...target.parentNode.cells].indexOf(target);
const collator = new Intl.Collator(['en', 'ru'], { numeric: true });
const comparator = (index, order) => (a, b) => order * collator.compare(
a.children[index].innerHTML,
b.children[index].innerHTML
);
for(const tBody of target.closest('table').tBodies)
tBody.append(...[...tBody.rows].sort(comparator(index, order)));
for(const cell of target.parentNode.cells)
cell.classList.toggle('sorted', cell === target);
};
document.querySelectorAll('.table_sort thead').forEach(tableTH => tableTH.addEventListener('click', () => getSort(event)));
});
.table_sort th {
cursor: pointer;
}
.table_sort td,
.table_sort th {
text-align: center;
}
th.sorted[data-order="1"],
th.sorted[data-order="-1"] {
position: relative;
}
th.sorted[data-order="1"]::after,
th.sorted[data-order="-1"]::after {
right: 8px;
position: absolute;
}
th.sorted[data-order="-1"]::after {
content: "▼"
}
th.sorted[data-order="1"]::after {
content: "▲"
}