EN
JavaScript - sort HTML table by column
12 points
Result of this post:

Code:
xxxxxxxxxx
1
2
<html>
3
<head>
4
<meta charset="UTF-8">
5
<style>
6
7
table {
8
width: 100%;
9
}
10
11
table, th, td {
12
border: 1px solid black;
13
border-collapse: collapse;
14
}
15
16
th, td {
17
padding: 5px;
18
text-align: left;
19
}
20
21
</style>
22
</head>
23
<body style="height: 300px;">
24
25
<h2>JavaScript - sort html table</h2>
26
27
<table style="width: 500px;">
28
<tr>
29
<th>letters</th>
30
<th>numbers</th>
31
</tr>
32
<tr>
33
<td>ccc</td>
34
<td>50</td>
35
</tr>
36
<tr>
37
<td>bbb</td>
38
<td>30</td>
39
</tr>
40
<tr>
41
<td>aaa</td>
42
<td>40</td>
43
</tr>
44
<tr>
45
<td>eee</td>
46
<td>20</td>
47
</tr>
48
<tr>
49
<td>ddd</td>
50
<td>10</td>
51
</tr>
52
</table>
53
54
<div style="margin-top: 10px;">
55
<button onclick="sort(0)">Sort first column (letters)</button>
56
<button onclick="sort(1)">Sort second column (numbers)</button>
57
</div>
58
59
<script>
60
61
function sort(columnIndex) {
62
const table = document.querySelector('table');
63
const rows = table.rows;
64
65
outer:
66
while (true) {
67
for (let index = 1; index < rows.length - 1; index++) {
68
const row1 = rows[index];
69
const row2 = rows[index + 1];
70
71
const text1 = row1.cells[columnIndex].innerText.toLowerCase();
72
const text2 = row2.cells[columnIndex].innerText.toLowerCase();
73
74
if (text1 > text2) {
75
row1.parentNode.insertBefore(row2, row1);
76
continue outer;
77
}
78
}
79
break;
80
}
81
}
82
83
</script>
84
85
</body>
86
</html>