php文件管理。能够点击依照时间。大小,名称排序

 本例没实用到jquery

 

PHP Code
  1. <?php   
  2. $rootdir="./";   
  3. $spacenum=0;   
  4. $filenum=0;   
  5. $allfilesize=0;   
  6. echo "<h1>文件管理freejs.net測试</h1>";   
  7. echo "<a href=''>重置</a>";   
  8. readLogDir($rootdir);   
  9. echo "<hr>";   
  10. echo "Total files count: $filenum.<br>";   
  11. echo "Total disk space used: $allfilesize<br>";   
  12. $freespace=diskfreespace("/");   
  13. echo "residue disk space: $freespace<br>";   
  14.   
  15. function readLogDir($subdir){   
  16. global $rootdir,$spacenum,$filenum,$allfilesize;   
  17.   
  18. @chdir($subdir) or die ("error:could not change to this directory!");   
  19. $dirobject=dir($subdir);   
  20. echo "<table width=600 border=0 align='center' id='clearStart'><tr id='ignore' ><td width=40% onclick='JM_PowerList(0)'><b>文件名称</b></a></td><td width=20% onclick='JM_PowerList(1)'><b>文件大小</b></td><td width=40% onclick='JM_PowerList(2)'><b>创建时间</b></td></tr>";   
  21. $i=0;   
  22. while ($file=$dirobject->read()){   
  23.   
  24. if($file=="." || $file==".."){   
  25. continue;   
  26. }   
  27. $i=$i+1;   
  28. echo "<tr bgcolor='#e0e0e0'><td>".$i."<a href=.php?file_dir=".$rootdir."&file_name=".$file." target=_blank>";   
  29. echo $file."</a></td><td>". number_format((filesize($file)/1024),2,'.','')."KB</td><td>". date("Y-m-d H:i:s", filemtime($file)). "</td></tr>";   
  30. $allfilesize+=filesize($file);   
  31. $filenum++;   
  32. }   
  33. echo "</table>";   
  34. return;   
  35. }   
  36. ?

    >   

  37.   
  38. <script src="table_sort.js"></script>   

 

JavaScript Code
  1. /** 
  2. * table排序 
  3. * anthor liueh 
  4. */  
  5. function JM_PowerList(colNum)   
  6. {   
  7. headEventObject=event.srcElement;//取得引发事件的对象   
  8. while(headEventObject.tagName!="TR") //不是tr行,则从底下的td冒泡上来寻找到对应行   
  9. {   
  10. headEventObject=headEventObject.parentElement;   
  11. }   
  12.   
  13. for (i=0;i<headEventObject.children.length;i++)   
  14. {   
  15. if (headEventObject.children[i]!=event.srcElement)//找到事件发生的td单元格   
  16. {   
  17. headEventObject.children[i].className='listTableHead';//把点击的列的className属性设为listTableHead   
  18. }   
  19. }   
  20.   
  21. var tableRows=0;   
  22. trObject=clearStart.children[0].children; //取得表格中行对象, 原来这里叫DataTable, 可能是你写错了吧??   
  23. for (i=0;i<trObject.length;i++)   
  24. {   
  25. Object=clearStart.children[0].children[i];//取得每行的对象   
  26. tableRows=(trObject[i].id=='ignore')?

    tableRows:tableRows+1;//假设不是忽略行,则行数加一   

  27. }   
  28.   
  29. var trinnerHTML=new Array(tableRows);   
  30. var tdinnerHTML=new Array(tableRows);   
  31. var tdNumber=new Array(tableRows)   
  32. var i0=0   
  33. var i1=0   
  34. for (i=0;i<trObject.length;i++)   
  35. {   
  36. if (trObject[i].id!='ignore')   
  37. {   
  38. trinnerHTML[i0]=trObject[i].innerHTML;//把行放在数组里   
  39. tdinnerHTML[i0]=trObject[i].children[colNum].innerHTML;//把要排序的行中td的内容放数组里   
  40. tdNumber[i0]=i;//行号   
  41. i0++;//加一,下个循环用   
  42. }   
  43. }   
  44. sourceHTML=clearStart.children[0].outerHTML;//取得表格中全部tr的html代码   
  45.   
  46. //对全部td中的字符串进行排序, 算不算冒泡排序?

    ?

    ?   

  47. for (bi=0;bi<tableRows;bi++)   
  48. {   
  49. for (i=0;i<tableRows;i++)   
  50. {   
  51. if(tdinnerHTML[i]>tdinnerHTML[i+1])   
  52. {   
  53. t_s=tdNumber[i+1];   
  54. t_b=tdNumber[i];   
  55. tdNumber[i+1]=t_b;   
  56. tdNumber[i]=t_s;   
  57. temp_small=tdinnerHTML[i+1];   
  58. temp_big=tdinnerHTML[i];   
  59. tdinnerHTML[i+1]=temp_big;   
  60. tdinnerHTML[i]=temp_small;   
  61. }   
  62. }   
  63. }   
  64.   
  65.   
  66.   
  67. var showshow='';   
  68. var numshow='';   
  69. for (i=0;i<tableRows;i++)   
  70. {   
  71. showshow=showshow+tdinnerHTML[i]+'\n';//把排序好的td的内容存在showshow字串里   
  72. numshow=numshow+tdNumber[i]+'|'; //把排序好的对应的行号也存在numshow中   
  73. }   
  74.   
  75. sourceHTML_head=sourceHTML.split("<TBODY>");//从<TBODY>截断,我试了,前头串为空   
  76.   
  77. numshow=numshow.split("|");   
  78. var trRebuildHTML='';   
  79. if (event.srcElement.className=='listHeadClicked')   
  80. {//已点击的列, 则逆排   
  81. for (i=0;i<tableRows;i++)   
  82. {   
  83. trRebuildHTML=trRebuildHTML+trObject[numshow[tableRows-1-i]].outerHTML;//取出排序好的tr的内容连接起来   
  84.   
  85. }   
  86. event.srcElement.className='listHeadClicked0';   
  87. }   
  88. else   
  89. {//默认顺排,新点击顺排   
  90. for (i=0;i<tableRows;i++)   
  91. {   
  92. trRebuildHTML=trRebuildHTML+trObject[numshow[i]].outerHTML;   
  93. }   
  94. event.srcElement.className='listHeadClicked';   
  95. }   
  96. //取得排序后的tr集合结果字符串   
  97. var DataRebuildTable='';   
  98. //把旧的表格头和新的tr排序好的元素连接起来, (改动了一下)   
  99. DataRebuildTable = "<table border=0 width=600 id='clearStart' align='center'><TBODY>" + trObject[0].outerHTML + trRebuildHTML + "</TBODY>" +   
  100.   
  101. "</table>";   
  102. clearStart.outerHTML=DataRebuildTable;//表格用新串又一次写一次   
  103.   
  104. }   

 

原文地址:http://www.freejs.net/article_jquerywenzi_147.html

php文件管理,能够点击依照时间,大小,名称排序的更多相关文章

  1. C#文件和文件文件夹按时间、名称排序-顺序与倒序

    对于文件和文件夹有多种排序方式,常用的就是按创建或修改时间.按文件名排序.在 C# 中,按时间和文件名排序都十分简单,用数组提供的排序方法 Array.Sort() 一行代码就可以搞定,当然也可以用常 ...

  2. C#比较时间大小 1、比较时间大小的实验

    1.比较时间大小的实验    string st1="12:13"; string st2="14:14"; DateTime dt1=Convert.ToDa ...

  3. SQL 比较时间大小

    比较字符串类型的时间大小 数据库中的时间是varchar类型的,MySql使用CURDATE()来获取当前日期,SqlServer通过GETDATE()来获取当前日期 1. 直接使用字符串来比较 注意 ...

  4. js前端验证时间大小

    replace(/\-/g, "\/")是根据验证表达式把日期转化成长日期格式 function checkStartTimeAndEndTime(startTime, endTi ...

  5. C#里面比较时间大小三种方法

    1.比较时间大小的实验 string st1="12:13";string st2="14:14";DateTime dt1=Convert.ToDateTim ...

  6. WPF判断两个时间大小避免误差

    进行查询操作的时候,经常用到判断开始时间和结束时间大小的条件,由于从控件上获取的时间除了年月日时分秒,还包括毫秒.微秒等,导致直接判断时间大小的时候会产生一些误差,如下: 结果分析:年月日时分秒一致的 ...

  7. java计算时间差及比较时间大小(转)

    比如:现在是2004-03-26 13:31:40        过去是:2004-01-02 11:30:24 我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒 方法一: DateFo ...

  8. js 日期时间大小比较

    <body> 开始时间:<input onfocus="setday(this)" id="startTime" name="sta ...

  9. Android JAVA中的时间大小比较

    import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

随机推荐

  1. 22.QT-QXmlStreamReader解析,QXmlStreamWriter写入

    XML介绍 XML 用于存储数据,数据的形式类似于树结构(参考: http://www.runoob.com/xml/) 示例如下 <?xml version="1.0" e ...

  2. Spring Boot 2.0 升级指南

    Spring Boot 2.0 升级指南 前言 Spring Boot已经发布2.0有5个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把项目中Spring Boot 版本做了升级,顺便整理下 ...

  3. json接口返回值

    SpringBoot响应客户端渲染数据 1.SpringBoot构造并且返回一个json对象 首先,我们在父包下新建一个pojo的包,并新建一个User类  IDEA自动生成对应的get/set,然后 ...

  4. js-string.js

    //小结// string.charAt(pos) 返回string中pos所在位置的字符 var name = "Cynthia"; var i = name.charAt(0) ...

  5. favicon.ico在chrome里显示正常,在ie,edge浏览器中不显示

    代码: <head> <meta charset="UTF-8"> <link href="imgs/favicon.ico" r ...

  6. MySql: Year, Quarter, Month, Day, Hour statistics

    -- 统计 select count(*) as '当天记录数' from web_product where date(p_createtime) = curdate(); select count ...

  7. 洛谷P2421 [NOI2002]荒岛野人(扩展欧几里得)

    题目背景 原 A-B数对(增强版)参见P1102 题目描述 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,…,M.岛上住着N个野人,一开始依次住在山洞C1,C2,… ...

  8. 苹果8plus怎么录屏视频

    现在越来越多的手机控,不管在什么地方,什么时候,都是低头看手机的居多,因为手机信息量太大了,一部手机就可以了解最新咨询,但是作为苹果8plus怎么录制手机屏幕,你们知道吗?今天就和大家一起分享苹果8p ...

  9. Mybatis使用动态代理实现拦截器功能

    1.背景介绍 拦截器顾名思义为拦截某个功能的一个武器,在众多框架中均有“拦截器”.这个Plugin有什么用呢?或者说拦截器有什么用呢?可以想想拦截器是怎么实现的.Plugin用到了Java中很重要的一 ...

  10. Android 消息异步处理之AsyncTask

    Android提供了异步处理消息的方式大致有两种,第一种是handler+Thread,之前已经对于这种方式做过分析,第二种就是AsyncTask,这是Android1.5提供的一种轻量级的工具类,其 ...