博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
点击表头,实现表格内容的规则排序
阅读量:7171 次
发布时间:2019-06-29

本文共 3134 字,大约阅读时间需要 10 分钟。

描述:实现表格信息的排序功能,当点击表头的属性区域,将表格信息进行排序切换功能,即第一次点击为降序排序,再一次点击进行升序排序。

     如图所示:

 姓名  力量  敏捷  智力
 赵  17  34  13
 钱  15  22  16
 孙  19  15  20
 李  23  15  15

接下来,首先绘制该表格,

1  2  3  4 
5 表格排序 6 7 26 27
//cellpadding 属性规定单元边沿与单元内容之间的空间,以像素计; //请勿将该属性与cellspacing属性相混淆,cellspacing 属性规定的是单元之间的空间。28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
姓名 力量 敏捷 智力
17 24 13
15 22 16
19 35 20
23 15 14
63 64 65

接下来,是对应的js实现:

1 var isSort = [false,false,false];//标记是否排过序 2     function sortTable (colNo) { 3         var rowsArray = [];//表格中所有行的集合 4         var colsArray = [];//表格中所有列的集合 5         var tbody = document.getElementsByTagName('tbody')[0]; 6         //初始化行和列 7         for (var i = 0; i < tbody.rows.length; i++) { 8             rowsArray[i] = tbody.rows[i]; 9             colsArray[i] = rowsArray[i].cells[colNo];10         }11          12         //排序13         //console.log(isSort[colNo])     14         if (!isSort[colNo]) {
//isSort为false时,降序排列15 isSort[colNo] = true;16 colsArray.sort(function (a,b) {17 return b.innerHTML - a.innerHTML;//a、b表示数组的任意两个元素,如果return>0,则b前a后,反之则a前b后 //例如:当点击第四列时,首先a=13,b=16,运算结果为b前a后;接下来a=13,b=20,因为b-a>0,之后b前a后,然后a=16,b=20,运算结果是b前a后,然后a=13,b=14,b-a>0, //b前a后,最后再比较a=16,b=14,此时b-a<0,不需要交换次序,排序停止 //此处是 b.innerHTML - a.innerHTML,得到的结果是降序排列; //如果是 a.innerHTML - b.innerHTML,得到的结果是升序排列; 18 });19 }else{20 //此时已经降序排序过了,对数组逆序即可21 colsArray.reverse();22 isSort[colNo] = false;23 }24 //当某一列排序后将表格所有元素的值放到新的数组中25 var rowsTempArray = [];26 for (var i = 0; i < rowsArray.length; i++) {27 var colsTempArray = [];28 for (var j = 0; j < colsArray.length; j++) {29 //将i行的所有列的内容保存在colsTempArray[j]中30 colsTempArray[j] = colsArray[i].parentNode.cells[j].innerHTML;//colsArray[i].parentNode指的是当前行 31 }32 //将一行内容保存到rowsTempArray。33 rowsTempArray[i] = colsTempArray;34 }35 //重绘页面36 for (var i = 0; i < rowsArray.length; i++) {37 for (var j = 0; j < colsArray.length; j++) {38 rowsArray[i].cells[j].innerHTML = rowsTempArray[i][j]; 39 }40 }41 }

 

转载于:https://www.cnblogs.com/lujun1949/p/5924809.html

你可能感兴趣的文章
cocos2dx内存优化
查看>>
Arguments
查看>>
鲁棒图(Robustness Diagram)
查看>>
2011TG初赛
查看>>
css3各种loading写法
查看>>
android 获取资源文件 R.drawable中的图片转换为drawable、bitmap(转载)
查看>>
GOOGLE卫星地图URL中的Tile位置编码算法
查看>>
python3中如何区分一个函数和方法
查看>>
文件I/O操作函数 lseek()
查看>>
datepicker使用
查看>>
关于纠正《Hive权威指南》中的结论~“hive在使用set自定义变量时,hivevar命名空间是可选的”~的论证...
查看>>
移动端遇到的问题小结--video
查看>>
【算法学习笔记】02.wikioi1205 单词翻转
查看>>
Codeforces Round #304 (Div.2)
查看>>
查看mysql binlog日志
查看>>
Spring中ioc的实现原理
查看>>
关于移动端使用swiper做图片文字轮播的思考
查看>>
我的Java开发学习之旅------>在Dos环境下Java内部类的编译和运行
查看>>
快速无损原样提取PDF文档中的图片
查看>>
框架page与JQgrid冲突
查看>>