Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function sortTable(n) {
- var table,
- rows,
- switching,
- i,
- x,
- y,
- shouldSwitch,
- dir,
- switchcount = 0;
- table = document.getElementById('myTable');
- switching = true;
- //Set the sorting direction to ascending:
- dir = 'asc';
- /*Make a loop that will continue until no switching has been done:*/
- while (switching) {
- //start by saying: no switching is done:
- switching = false;
- rows = table.getElementsByTagName('TR');
- /*Loop through all table rows (except the first, which contains table headers):*/
- for (i = 1; i < rows.length - 1; i++) {
- //Change i=0 if you have the header th a separate table.
- //start by saying there should be no switching:
- shouldSwitch = false;
- /*Get the two elements you want to compare,one from current row and one from the next:*/
- x = rows[i].getElementsByTagName('TD')[n];
- y = rows[i + 1].getElementsByTagName('TD')[n];
- const xNum = typeCheck(x.innerHTML);
- const yNum = typeCheck(y.innerHTML);
- console.log('TCL: ynum', i, yNum);
- console.log('TCL: xnum', i, xNum);
- /*check if the two rows should switch place,based on the direction, asc or desc:*/
- if (dir == 'asc') {
- if (Number(xNum) > Number(yNum)) {
- //if (xNum.toLowerCase() > yNum.toLowerCase()) {
- //if so, mark as a switch and break the loop:
- shouldSwitch = true;
- break;
- }
- } else if (dir == 'desc') {
- if (Number(xNum) < Number(yNum)) {
- //if (xNum.toLowerCase() < yNum.toLowerCase()) {
- //if so, mark as a switch and break the loop:
- shouldSwitch = true;
- break;
- }
- }
- }
- if (shouldSwitch) {
- /*If a switch has been marked, make the switch and mark that a switch has been done:*/
- rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
- switching = true;
- //Each time a switch is done, increase this count by 1:
- switchcount++;
- } else {
- /*If no switching has been done AND the direction is "asc",set the direction to "desc" and run the while loop again.*/
- if (switchcount == 0 && dir == 'asc') {
- dir = 'desc';
- switching = true;
- }
- }
- }
- }
- function typeCheck(value) {
- if (Number(value)) {
- return value;
- }
- const isDate = new Date(value);
- if (isDate instanceof Date && !isNaN(isDate.valueOf())) {
- return isDate.getTime();
- }
- return value;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement