xxxxxxxxxx
http://example.com/style.css X
1
body {
2
margin:0;
3
padding:10px;
4
background-color:aliceblue;
5
}
6
.table-sortable {
7
border-collapse:collapse;
8
table-layout:fixed;
9
width:100%;
10
font:normal normal 13px/1.4 Arial, Sans-Serif;
11
color:black;
12
background-color:white;
13
}
14
.table-sortable th, .table-sortable td {
15
margin:0;
16
padding:5px 8px;
17
border:none;
18
vertical-align:top;
19
text-align:left;
20
}
21
.table-sortable th {
22
font-weight:bold;
23
background-color:slategray;
24
color:white;
25
border-color:white;
26
}
27
.table-sortable tbody tr:nth-child(even) {
28
background-color:whitesmoke
29
}
30
.table-sortable th {
31
cursor:pointer
32
}
33
th.asc, th.desc {
34
background-color:lightslategray
35
}
36
th.asc:before, th.desc:before {
37
content:"";
38
display:block;
39
float:right;
40
width:0;
41
height:0;
42
border:.4em solid transparent;
43
}
44
th.asc:before {
45
border-bottom-color:inherit;
46
border-top-width:0;
47
margin-top:.4em;
48
}
49
th.desc:before {
50
border-top-color:inherit;
51
border-bottom-width:0;
52
margin-top:.5em;
53
}
xxxxxxxxxx
http://example.com/script.js X
x
1
// Original code: http://stackoverflow.com/a/14268260/1163000
2
// Usage: `makeSortable(elem);`
3
(function () {
4
function sortTable(table, col, reverse) {
5
var tb = table.tBodies[0], // Use `<tbody>` to ignore `<thead>` and `<tfoot>` rows
6
tr = Array.prototype.slice.call(tb.rows, 0); // Put rows into array
7
reverse = -((+reverse) || -1);
8
tr = tr.sort(function (a, b) { // Sort rows
9
return reverse * (a.cells[col].textContent.trim().localeCompare(b.cells[col].textContent.trim()));
10
});
11
for (var i = 0, len = tr.length; i < len; ++i) {
12
tb.appendChild(tr[i]); // Append each row in order
13
}
14
}
15
16
function makeSortable(table) {
17
var th = table.tHead,
18
i;
19
th && (th = th.rows[0]) && (th = th.cells);
20
if (th) {
21
i = th.length;
22
} else {
23
return; // If no `<thead>` then do nothing
24
}
25
while (--i >= 0)(function (i) {
26
var dir = 1;
27
th[i].onmousedown = function () {
28
for (var j = 0, jen = th.length; j < jen; ++j) {
29
th[j].className = th[j].className.replace(/(^| )desc|asc( |$)/g, "$1$2");
30
}
31
sortTable(table, i, (dir = 1 - dir));
32
this.className += dir === 1 ? " desc" : " asc";
33
return false;
34
};
35
}(i));
36
}
37
window.makeSortable = makeSortable;
38
})();
95
1
<table class="table-sortable">
2
<thead>
3
<tr>
4
<th style="width:60%;">Judul Buku</th>
5
<th>Harga</th>
6
<th>Status</th>
7
</tr>
8
</thead>
9
<tbody>
10
<!-- Sortable rows -->
11
<tr>
12
<td>Manusia dan Kebudayaan di Indonesia Koentjaraningrat</td>
13
<td>Rp 75.000</td>
14
<td>Bekas</td>
15
</tr>
16
<tr>
17
<td>Pebble In The Shoe: Diplomatic Struggle For East Timor</td>
18
<td>Rp 100.000</td>
19
<td>Baru</td>
20
</tr>
21
<tr>
22
<td>Membangun Negara Baru Timor Lorosae</td>
23
<td>Rp 100.000</td>
24
<td>Baru</td>
25
</tr>
26
<tr>
27
<td>Edward W. Said — Covering Islam: Bias Liputan Barat</td>
28
<td>Rp 55.000</td>
29
<td>Bekas</td>
30
</tr>
31
<tr>
32
<td>Wacana Masyarakat Dan Kebudayaan Jawa Pesisiran</td>
33
<td>Rp 85.000</td>
34
<td>Bekas</td>
35
</tr>
36
<tr>
37
<td>Paradoks Papua</td>
38
<td>Rp 40.000</td>
39
<td>Bekas</td>
40
</tr>
41
<tr>
42
<td>Political and Economic Systems</td>
43
<td>Rp 60.000</td>
44
<td>Bekas</td>
45
</tr>
46
<tr>
47
<td>Melawan Ketertutupan Informasi</td>
48
<td>Rp 35.000</td>
49
<td>Bekas</td>
50
</tr>
51
<tr>
52
<td>Profil Budaya Politik Indonesia</td>
53
<td>Rp 35.000</td>
54
<td>Bekas</td>
55
</tr>
56
<tr>
57
<td>Agama Pragmatis: Telaah atas Konsepsi Agama John Dewey</td>
58
<td>Rp 45.000</td>
59
<td>Baru</td>
60
</tr>
61
<tr>
62
<td>Jurnalisme Bencana, Bencana Jurnalisme</td>
63
<td>Rp 50.000</td>
64
<td>Baru</td>
65
</tr>
66
<tr>
67
<td>Pemikiran Karl Marx</td>
68
<td>Rp 25.000</td>
69
<td>Bekas</td>
70
</tr>
71
<tr>
72
<td>Bertahan Hidup di Gulag Indonesia, Carmel Budiardjo</td>
73
<td>Rp 200.000</td>
74
<td>Bekas</td>
75
</tr>
76
<tr>
77
<td>Buku Pantja Warsa Manipol Panitia Pembina Jiwa Revolusi</td>
78
<td>Rp 350.000</td>
79
<td>Bekas</td>
80
</tr>
81
<tr>
82
<td>Deliar Noer: Gerakan Moderen Islam 1900–1942</td>
83
<td>Rp 150.000</td>
84
<td>Bekas</td>
85
</tr>
86
<tr>
87
<td>Sang Penguasa oleh Niccolo Machiavelli</td>
88
<td>Rp 35.000</td>
89
<td>Bekas</td>
90
</tr>
91
</tbody>
92
</table>
93
<script>
94
makeSortable(document.getElementsByTagName('table')[0]);
95
</script>