您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
add sorting to tables
当前为
- // ==UserScript==
- // @name Jstris table sort
- // @namespace
- // @version 0.2
- // @description add sorting to tables
- // @author mxmossy
- // @match https://*.jstris.jezevec10.com/*
- // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- // adapted from https://stackoverflow.com/questions/14267781/sorting-html-table-with-javascript
- var getCellValue = function(tr, idx){ return tr.children[idx].innerText || tr.children[idx].textContent; }
- var format = function(s){return s.replace(/[:\- ]/g, "")}
- var comparer = function(idx, asc) {
- return function(a, b) {
- return function(v1, v2) {
- if(v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2)){
- return v1 - v2;
- }
- else if(v1.includes(":") || v2.includes(":")){
- return parseFloat(format(v1)) - parseFloat(format(v2));
- }
- else return v1.toString().localeCompare(format(v2));
- }(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));
- }};
- // do the work...
- Array.prototype.slice.call(document.querySelectorAll('th')).forEach(function(th) { th.addEventListener('click', function() {
- var table = th.parentNode;
- while(table.tagName.toUpperCase() != 'TABLE') table = table.parentNode;
- var tableBody = table.querySelector('tbody');
- Array.prototype.slice.call(table.querySelectorAll('tbody tr:nth-child(n+1)'))
- .sort(comparer(Array.prototype.slice.call(th.parentNode.children).indexOf(th), this.asc = !this.asc))
- .forEach(function(tr) { tableBody.appendChild(tr) });
- })});
- })();