转自:[https://www.cnblogs.com/zczhangcui/p/6329736.html](https://www.cnblogs.com/zczhangcui/p/6329736.html)
HTML如下:
```html
英雄 | 力量 | 敏捷 | 智力 | 移速 |
英雄1 | 28 | 32 | 20 | 300 |
英雄2 | 29 | 22 | 30 | 320 |
英雄3 | 25 | 30 | 25 | 310 |
英雄4 | 33 | 28 | 22 | 305 |
英雄5 | 27 | 36 | 20 | 330 |
```
效果如下:

# 一、原生JS实现
来自JS权威指南,比书上多了再次点击后逆序排列的功能
```javascript
//查找表格的元素,让它们可单击
function makeSortable(table) {
var headers=table.getElementsByTagName("th");
for(var i=0;i
var rows=tbody.getElementsByTagName("tr");//tbody中的所有行
rows=Array.prototype.slice.call(rows,0);//真实数组中的快照
//基于第n个元素的值对行排序
rows.sort(function(row1,row2){
var cell1=row1.getElementsByTagName("td")[n];//获得第n个单元格
var cell2=row2.getElementsByTagName("td")[n];
var val1=cell1.textContent||cell1.innerText;//获得文本内容
var val2=cell2.textContent||cell2.innerText;
if(val1val2){
return 1;
}else{
return 0;
}
});
if(flag){
rows.reverse();
}
//在tbody中按它们的顺序把行添加到最后
//这将自动把它们从当前位置移走,故没必要预先删除它们
//如果还包含了除了的任何其他元素,这些节点将会悬浮到顶部位置
for(var i=0;ival2){
return 1;
}else if(val1 | |