导航:业界 | 认证 | 工具 | 图形 | 技术 | 系统 | 网络 | 办公 | 网页 | 文摘 | 动画
您当前的位置:diva8.com -> I T -> 技术 -> Script -> I T内容
栏目导航
· .Net专栏 · Script
· ASP学院 · PHP学院
· Web服务器 · CGI学院
· XML学院 · SQL学院
· JSP学院 · SMS学院
热门I T
· [组图] 音频后期处理Adobe ...
· [组图] Photoshop--照片处理...
· [组图] 廉颇老矣?IE7.0 Bet...
· [图文] DuDu下载加速器推出...
· [组图] 清晰还原!Photoshop...
· [组图] 用photoshop给图片祛...
· [组图] DuDu 下载加速器试用...
· [组图] 新春特别版:PPLIVE...
· [图文] 让查找更方便些 腾讯...
· [组图] 廉颇老矣?IE7.0 Bet...
相关I T
JS表格排序新法
作者:Admin  来源:齐昌网络  发布时间:2004-6-2 14:57:19  发布人:qichang

减小字体 增大字体



不知大家对精华区的表格排序终极优化是否还有记忆,当时讨论的结果曾以为是最快的JS排序了,实则不然,按前段时间我发的DHTML性能提升帖(转译)所讲到的,DOM效率某些情况下并不如DHTML,比如一次写入大量数据时,DOM频繁创建添加反而更慢,所以可以对排序算法作以下修改:
<table id=downloadList border="1" width="100%" onclick="sortTable()"> <tr> <td>AddCommonInfo.mxp</td> <td>MXP File</td> <td>2614</td> <td>2002-12-30 16:45:22,Fri</td> </tr> <tr> <td>addtemplateparam.mxp</td> <td>MXP File</td> <td>3100</td> <td>2002-12-5 13:28:24,Sun</td> </tr></table><script>var curObj;function sortTable() {var start=new Date()var i;var theRows=new Array();for(i=0;i<downloadList.rows.length;i++) {theRows[i]=new Array(downloadList.rows[i].cells[0].innerText.toLowerCase(),downloadList.rows[i].outerHTML);}theRows.sort(sortRows);var str=''for(i=0;i<theRows.length;i++) {str+=theRows[i][1];}downloadList.outerHTML='<table id=downloadList border="1" width="100%">'+str+'</table>'curObj=null;alert(new Date()-start)return ;}function sortRows(x,y) {if(x[0]>y[0]) return -1;else if(x[0]<y[0]) return 1;else return 0;}</script> [单击全选,Ctrl+A复制,将代码保存成html文件运行]注意测试时将记录条数增加到500条以上,推荐1000条
我测试结果是平均1322ms左右但这样就是最快的吗?非也,且看以下xml+xslt+js例子,能把时间缩短到721ms左右
需要准备三个文件
1. xml文件 ---节省版面起见,这里只罗列两条记录
<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <record>
    <info>AddCommonInfo.mxp</info>
    <info>MXP File</info>
    <info>2614</info>
<info>2002-12-30 16:45:22,Fri</info>
  </record>
  <record>
    <info>addtemplateparam.mxp</info>
    <info>MXP File</info>
    <info>3100</info>
    <info>2002-12-5 13:28:24,Sun</info>
  </record>
</root>2. xsl 文件
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0">
<xsl:template match="root">
<table border="1" width="100%">
<xsl:for-each select="record">
<tr>
<xsl:for-each select="info">
<td>
<xsl:value-of select="text()" />
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>注意命名空间,想要在IE5下兼容,必须使用这个名字 3.htm文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""><script>function safeLoadXML(xmlObj,url,func){xmlObj.async= true;xmlObj.resolveExternals= false;xmlObj.onreadystatechange= function() { if(xmlObj.readyState==4 && xmlObj.parseError==0) { func(xmlObj); } }xmlObj.load(url);}function transformXML(xmlObj,xslObj){var returnValue= xmlObj.transformNode(xslObj);return returnValue;}var xmlDoc= new ActiveXObject("Msxml.DOMDocument");var xslDoc= new ActiveXObject("Msxml.DOMDocument");function init(){safeLoadXML(xmlDoc,'sort.xml',function(){safeLoadXML(xslDoc,'sort.xsl',function(){test.innerHTML= transformXML(xmlDoc.documentElement,xslDoc.documentElement);});});}function sortIt(){var start=new Date();var temp= [];for(var i=0;i<xmlDoc.documentElement.childNodes.length;i++){temp[temp.length]= [xmlDoc.documentElement.childNodes[i].firstChild.firstChild.nodeValue,xmlDoc.documentElement.childNodes[i]]}temp.sort(sortFunc);for(var i=0;i<temp.length;i++){xmlDoc.documentElement.insertBefore(temp[i][1],xmlDoc.documentElement.firstChild)}test.innerHTML= transformXML(xmlDoc.documentElement,xslDoc.documentElement);alert(new Date()-start);}function sortFunc(x,y){if(x[0].toLowerCase()>y[0].toLowerCase()) return 1;else if(x[0].toLowerCase()<y[0].toLowerCase()) return -1;else return 0;}window.onload=init;</script></HEAD><BODY><div id=test onclick=sortIt()></div></BODY></HTML> [单击全选,Ctrl+A复制,将代码保存成html文件运行]以上代码在 WIN2K,IE5 下测试通过,欢迎大家指正 :)


[] [返回上一页] [打 印] [收 藏]
∷相关I T评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 在线人数:
diva8.com Copyright © 2001-2006 diva8.com All Rights Reserved .粤ICP备05014750号