大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> Script -> JS表格排序新法

JS表格排序新法

时间: 2021-07-31 作者:daque

不知大师对精炼区的表格排序最终优化能否再有回顾,其时计划的截止曾觉得是最快的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 下尝试经过,欢送大师教正 :)

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.