传统表格排序
当前为
// ==UserScript==
// @name table-sorter
// @namespace https://greasyfork.org/
// @version 0.0.1
// @description 传统表格排序
// @author HqLin
// @match https://tfgames.site/*
// @grant GM.setClipboard
// @grant GM.addStyle
// @license AGPLv3
// ==/UserScript==
'use strict';
(function () {
document.querySelectorAll('table').forEach((tbl) => {
const thead = tbl.querySelector('thead')
const theads = tbl.querySelectorAll('thead th')
const trows = tbl.querySelectorAll('tbody tr')
if (trows.length === 0 || theads.length === 0 || !thead) return
theads.forEach((head, idx) => head.dataset.index = idx)
let sortingIdx = 0, reverse = false
thead.addEventListener('click', (ev) => {
const header = ev.target.closest('th')
reverse = header.dataset.index === sortingIdx ? !reverse : false
sortingIdx = header.dataset.index
const tbody = tbl.querySelector('tbody')
tbody.innerHTML = ''
const trowsSorted = Array.from(trows).sort((rowA, rowB) => {
const cellA = rowA.querySelectorAll('td')[sortingIdx]?.textContent
const cellB = rowB.querySelectorAll('td')[sortingIdx]?.textContent
const delta = cellA - cellB
return (reverse ? -1 : 1) * (Number.isNaN(delta) ? cellA.localeCompare(cellB) : delta)
})
trowsSorted.forEach(row => tbody.appendChild(row))
})
})
})()