在web前端开发中会遇到排序等功能,当然也可以用服务器端来排序,今天我做一个笔记,怎么用js来实现这些复杂的功能呢。

在学习这个之前一定得用html dom jquery 的知识,要不没有办法看明白的,当然也不包括你是一个天才了。哈哈!

好了,先说一下思路,这里说一下,在学习一个js特效的时候思路很重要,可以说你不用对js多么的精通,但是一个功能放在你的面前,你必须有个很清晰的思路,这样做起来就很容易了,就算是再困难的特效也不例外!

一共有四个步骤:首先要给触发排序的控件添加事件,这里我就略过了。

1.把要排序的内容添加到数组里

  1. var tIndex=parseInt($(this).index());
  2. var valueArray=new Array();
  3. var p=0;
  4. for(var i=1; i<$("table tr").length; i++){
  5. if(tIndex!=0){
  6. valueArray[p]=parseInt($("table tr:eq("+i+") td").eq(tIndex).html());
  7. }else{
  8. valueArray[p]=$("table tr:eq("+i+") td").eq(tIndex).html();
  9. }
  10. p++;
  11. }

2.数据排序

  1. //数据排序
  2. if(pk==1){
  3. valueArray.sort(function(a,b){ return a<b ? -1:1})
  4. pk=2
  5. }else{
  6. valueArray.sort(function(a,b){ return a>b ? -1:1})
  7. pk=1
  8. }

3.匹配内容    加入到一个隐藏的排序div里

  1. for(var i=0; i<valueArray.length; i++){
  2. for(var d=1; d<$("table tr").length; d++){
  3. var valueText= tIndex!=0 ? parseInt($("table tr:eq("+d+") td").eq(tIndex).html()):$("table tr:eq("+d+") td").eq(tIndex).html();
  4. if(valueArray[i]==valueText){
  5. $("table tr").eq(d).clone().appendTo(".none")
  6. }
  7. }
  8. }

4.重新整理html 排序,添加到视图里

  1. var titleClone=$("table tr").eq(0).clone(true);
  2. $("table").html("").append(titleClone);
  3. $("table").append($(".none").html())
  4. $(".none").html("");

通过这四个步骤就可以实现你要js排序的功能了,是不是很简单呢,也可以通过这个例子举一反三。这得看大家的想象力了。

下面上一个完整的代码

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>js排序特效</title>
  6. <script src="http://suiyidian.cn/texiao/tab/jquery-1.5.2.min.js" type="text/javascript"></script>
  7. <style>
  8. .main{ height:auto; overflow:hidden; margin:0px auto;}
  9. .main td{ text-align:center; height:28px; width:100px; line-height:28px ; font-size:14px; color:#555;}
  10. .main .title td{ cursor:pointer; color:#333}
  11. .none{ display:none}
  12. </style>
  13. <script>
  14. $(function(){
  15. var pk=1;
  16. $(".title td").click(function(){
  17. // 把要排序的内容添加到数组里
  18. var tIndex=parseInt($(this).index());
  19. var valueArray=new Array();
  20. var p=0;
  21. for(var i=1; i<$("table tr").length; i++){
  22. if(tIndex!=0){
  23. valueArray[p]=parseInt($("table tr:eq("+i+") td").eq(tIndex).html());
  24. }else{
  25. valueArray[p]=$("table tr:eq("+i+") td").eq(tIndex).html();
  26. }
  27. p++;
  28. }
  29. //数据排序
  30. if(pk==1){
  31. valueArray.sort(function(a,b){ return a<b ? -1:1})
  32. pk=2
  33. }else{
  34. valueArray.sort(function(a,b){ return a>b ? -1:1})
  35. pk=1
  36. }
  37. //匹配内容 加入到一个隐藏的排序div里+-
  38. for(var i=0; i<valueArray.length; i++){
  39. for(var d=1; d<$("table tr").length; d++){
  40. var valueText= tIndex!=0 ? parseInt($("table tr:eq("+d+") td").eq(tIndex).html()):$("table tr:eq("+d+") td").eq(tIndex).html();
  41. if(valueArray[i]==valueText){
  42. $("table tr").eq(d).clone().appendTo(".none")
  43. }
  44. }
  45. }
  46. //重新整理html 排序,添加到视图里
  47. var titleClone=$("table tr").eq(0).clone(true);
  48. $("table").html("").append(titleClone);
  49. $("table").append($(".none").html())
  50. $(".none").html("");
  51. })
  52. })
  53. </script>
  54. </head>
  55. <body>
  56. <table class="main" width="500" border="0" cellspacing="1" bgcolor="#666666">
  57. <tr class="title">
  58. <td bgcolor="#CCCCCC">姓名</td>
  59. <td bgcolor="#CCCCCC">年龄</td>
  60. <td bgcolor="#CCCCCC">出生年</td>
  61. <td bgcolor="#CCCCCC">分数</td>
  62. </tr>
  63. <tr>
  64. <td bgcolor="#FFFFFF">李百(L)</td>
  65. <td bgcolor="#FFFFFF">15</td>
  66. <td bgcolor="#FFFFFF">1988</td>
  67. <td bgcolor="#FFFFFF">99</td>
  68. </tr>
  69. <tr>
  70. <td bgcolor="#FFFFFF">王易(W)</td>
  71. <td bgcolor="#FFFFFF">25</td>
  72. <td bgcolor="#FFFFFF">2000</td>
  73. <td bgcolor="#FFFFFF">150</td>
  74. </tr>
  75. <tr>
  76. <td bgcolor="#FFFFFF">林明(L)</td>
  77. <td bgcolor="#FFFFFF">18</td>
  78. <td bgcolor="#FFFFFF">1745</td>
  79. <td bgcolor="#FFFFFF">120</td>
  80. </tr>
  81. <tr>
  82. <td bgcolor="#FFFFFF">李姐(L)</td>
  83. <td bgcolor="#FFFFFF">20</td>
  84. <td bgcolor="#FFFFFF">1996</td>
  85. <td bgcolor="#FFFFFF">130</td>
  86. </tr>
  87. </table>
  88. <div class="none"></div>
  89. <div style="text-align:center; font-size:12px; margin-top:10px"> 特效出自:kevn-<a href="http://suiyidian.cn" target="_blank">web前段开发</a></div>
  90. </body>
  91. </html>

转载于:https://www.cnblogs.com/jinhuixin/p/4081643.html

利用js排序html表格相关推荐

  1. 利用JS来实现表格的全选、全不选、反选以及删除的功能

    利用JS来进行表格的选择删除等功能 二.代码 1.表格的制作以及事件的绑定 2.全选按钮的功能实现 3.全不选按钮的功能实现 4.反选按钮的功能实现 5.删除按钮的功能实现 6.鼠标悬停时颜色的变化 ...

  2. html利用js生成excel表格(html表格标签生成excel)table2excel实例:一表格多sheets

    table2excel实例 使用插件:table2excel.js 简介:table2excel 可以转换和下载html上的表格,使他成为.xlsx格式,能够被Excel打开 实例代码 <hea ...

  3. html怎么自动导入数据并排序,JS实现table表格数据排序功能(可支持动态数据+分页效果)...

    asp.net会经常遇到分页的效果,尤其是希望实现静态的html分页排序(html分页相信大家都已经有自己的解决方案.在这里就不多说).我写了一个简单的Demo排序. 数据就是字母和数字两组.(汉字需 ...

  4. html excel 在线编辑,利用js实现在线编辑excel表格代码

    特效描述:利用js实现 在线编辑 excel 表格代码.利用js实现在线编辑excel表格代码 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码  function load(){ x ...

  5. html表格按照编号排序,JS实现简单表格排序操作示例

    本文实例讲述了JS实现简单表格排序操作.分享给大家供大家参考,具体如下: sort table *{ margin:0px; padding:0px; } body{ background:#ccc; ...

  6. JS利用for循环 画表格 解析json字符串数据 写入表格

    背景:因为工作需要,需要讲数据拆分之后放入表格中,一共需要64行8列,总不能手动搞吧,于是便想先获取行数,再根据行数决定画多少行,但是数据获取有问题,暂时这块没有解决,只利用for循环画了64行,然后 ...

  7. Vue.js学习笔记—sort-table:实战:使用Render函数开发可排序的表格组件

    参考<Vue,js>实战(梁灏编著) sort-table:实战:使用Render函数开发可排序的表格组件 index.html <!DOCTYPE html> <htm ...

  8. 利用js对页面数据进行排序

    先把标签用jQuery读进对象数组 用js排序好对象数组 (针对对象数组进行排序, 不要试图直接对网页的内容进行直接更改) 用对象数组内容覆盖网页上的标签数组; 转载于:https://www.cnb ...

  9. js建立excel表格_建立Excel足球联赛表格传统方法与动态数组

    js建立excel表格 介绍 (Introduction) I am going to show you the different ways you can build a football lea ...

  10. Case Study: 利用JS设计高级检索功能通过PHP获取MySQL数据

    一.目标 该笔记的目的是引导读者借助WampServer平台和MySQL数据库,利用HTML/CSS/JS/PHP设计一个含有高级检索功能的数据库网页.该功能效果如图1所示.用户在文本框中输入相应内容 ...

最新文章

  1. python分类算法_用Python实现KNN分类算法
  2. Mybatis打印调试sql的两种方式
  3. C++ STL的基本基本原理
  4. Tornado使用mako 模板总结
  5. NDK建立多个共享库
  6. 基于netty的微服务网关_基于Rx-netty和Karyon2的云就绪微服务
  7. vim中如何设置多行注释和删除注释
  8. 代码不是重点, 领悟OO思想(一)
  9. 使用dataadapter和dataset更新数据库
  10. day17 10.jdbc的crud操作
  11. IBM最新调研表明:大数据等于大回报
  12. GRE 9月15日机经
  13. 魔兽世界稳定服务器,魔兽世界美服服务器趋于稳定 排队新技术将实装
  14. 一文读懂5G专网发展现状与挑战
  15. 百度贴吧安卓客户端网络通信行为分析
  16. 巨潮网怎么下载年报_如何下载上市公司的年度报告
  17. 论文阅读:Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
  18. HTML href指向function
  19. 访问activemqProblem accessing /. Reason: Service Unavailable Powered by Jett
  20. 网络游戏通讯引擎,高性能IOCP模型(.Net)

热门文章

  1. (转)Android text文字阴影设置
  2. 从游戏谈起——论主动性和责任心
  3. cisco交换机命令大全(11)
  4. windows server 2003 版本的识别 及 小技巧
  5. Android 拷贝Asset目录下文件或者文件夹
  6. 再见, VS Code !你好,GitHub!
  7. Tomcat爆出严重漏洞,影响所有版本,波及约8万台服务器,附解决方案!(扩散!!!)...
  8. Google深度学习TensorFlow最好的入门文章!
  9. Linux 下 4 种禁用 Root 登陆的方法,你掌握了哪几种呢?
  10. 对unidbgrid的单元格操作