首页 > 语言 > JavaScript > 正文

javascript操作表格排序实例分析

2024-05-06 16:19:28
字体:
来源:转载
供稿:网友

这篇文章主要介绍了javascript操作表格排序,涉及javascript数组排序与表格操作的相关技巧,需要的朋友可以参考下

本文实例讲述了javascript操作表格排序的方法。分享给大家供大家参考。具体如下:

完整例子如下:

 

 
  1. <html> 
  2. <head> 
  3. <title>Table Sort Example</title> 
  4. <script type="text/javascript"
  5. //转换器,将列的字段类型转换为可以排序的类型:String,int,float 
  6. function convert(sValue, sDataType) { 
  7. switch(sDataType) { 
  8. case "int"
  9. return parseInt(sValue); 
  10. case "float"
  11. return parseFloat(sValue); 
  12. case "date"
  13. return new Date(Date.parse(sValue)); 
  14. default
  15. return sValue.toString(); 
  16. //排序函数产生器,iCol表示列索引,sDataType表示该列的数据类型 
  17. function generateCompareTRs(iCol, sDataType) { 
  18. return function compareTRs(oTR1, oTR2) { 
  19. var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType); 
  20. var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType); 
  21. if (vValue1 < vValue2) { 
  22. return -1; 
  23. else if (vValue1 > vValue2) { 
  24. return 1; 
  25. else { 
  26. return 0; 
  27. }; 
  28. //排序方法 
  29. function sortTable(sTableID, iCol, sDataType) { 
  30. var oTable = document.getElementById(sTableID); 
  31. var oTBody = oTable.tBodies[0]; 
  32. var colDataRows = oTBody.rows; 
  33. var aTRs = new Array; 
  34. //将所有列放入数组 
  35. for (var i=0; i < colDataRows.length; i++) { 
  36. aTRs[i] = colDataRows[i]; 
  37. //判断最后一次排序的列是否与现在要进行排序的列相同, 
  38. //是的话,直接使用reverse()逆序 
  39. if (oTable.sortCol == iCol) { 
  40. aTRs.reverse(); 
  41. else { 
  42. //使用数组的sort方法,传进排序函数 
  43. aTRs.sort(generateCompareTRs(iCol, sDataType)); 
  44. var oFragment = document.createDocumentFragment(); 
  45. for (var i=0; i < aTRs.length; i++) { 
  46. oFragment.appendChild(aTRs[i]); 
  47. oTBody.appendChild(oFragment); 
  48. //记录最后一次排序的列索引 
  49. oTable.sortCol = iCol; 
  50. </script> 
  51. </head> 
  52. <body> 
  53. <p>Click on the table header to sort in ascending order.</p> 
  54. <table border="1" id="tblSort"
  55. <thead> 
  56. <tr> 
  57. <th onclick="sortTable('tblSort', 0)" 
  58. style="cursor:pointer">Last Name</th> 
  59. <th onclick="sortTable('tblSort', 1)" 
  60. style="cursor:pointer">First Name</th> 
  61. <th onclick="sortTable('tblSort', 2, 'date')" 
  62. style="cursor:pointer">Birthday</th> 
  63. <th onclick="sortTable('tblSort', 3, 'int')" 
  64. style="cursor:pointer">Siblings</th> 
  65. </tr> 
  66. </thead> 
  67. <tbody> 
  68. <tr> 
  69. <td>Smith</td> 
  70. <td>John</td> 
  71. <td>7/12/1978</td> 
  72. <td>2</td> 
  73. </tr> 
  74. <tr> 
  75. <td>Johnson</td> 
  76. <td>Betty</td> 
  77. <td>10/15/1977</td> 
  78. <td>4</td> 
  79. </tr> 
  80. <tr> 
  81. <td>Henderson</td> 
  82. <td>Nathan</td> 
  83. <td>2/25/1949</td> 
  84. <td>1</td> 
  85. </tr> 
  86. <tr> 
  87. <td>Williams</td> 
  88. <td>James</td> 
  89. <td>7/8/1980</td> 
  90. <td>4</td> 
  91. </tr> 
  92. <tr> 
  93. <td>Gilliam</td> 
  94. <td>Michael</td> 
  95. <td>7/22/1949</td> 
  96. <td>1</td> 
  97. </tr> 
  98. <tr> 
  99. <td>Walker</td> 
  100. <td>Matthew</td> 
  101. <td>1/14/2000</td> 
  102. <td>3</td> 
  103. </tr> 
  104. </tbody> 
  105. </table>  
  106. </body> 
  107. </html> 

希望本文所述对大家的javascript程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选