本文实例讲述了js表头排序实现方法。分享给大家供大家参考。 具体实现方法如下: 复制代码 代码如下: <br /> //是否递减排序<br /> var isDescending = true;<br /> /*****************************************<br /> * 要排序的行必须放到<tbody>标签中<br /> * tableId:排序表格ID<br /> * colNo:排序的列号,即第几列,从0开始<br /> * startRowNo:排序的开始行号,从0开始<br /> * sortLength:要排序的行数,<br /> * type:排序列的类型<br /> */<br /> function sort(tableId, colNo ,startRowNo, sortLength, type)<br /> {<br /> //如果要排序的行数是1或是0,则不对其进行排序操作<br /> if(sortLength<=1){<br /> return;<br /> }<br /> var currTable = document.getElementById(tableId);<br /> var theHeader = currTable.outerHTML.substring(0, currTable.outerHTML.indexOf('<TBODY>')+7)<br /> var theFooter = currTable.outerHTML.substring(currTable.outerHTML.indexOf('')-8);<br /> //这里的行数是去掉表头表头行和表位行的行数<br /> var theRows = new Array(sortLength);<br /> //对表中的数据进行循环<br /> for(i=startRowNo; i<sortLength+startRowNo; i++)<br /> {<br /> theRows[i-startRowNo] = new Array(currTable.rows[i].cells[colNo].innerText.toLowerCase(), currTable.rows[i].outerHTML);<br /> }<br /> if(type.toUpperCase()=='NUMBER')<br /> {<br /> theRows.sort(compareNumber);<br /> }<br /> else if(type.toUpperCase()=='DATE')<br /> theRows.sort(compareDate);<br /> else if(type.toUpperCase()=='STRING')<br /> theRows.sort(compareString);<br /> var tableInfo=''<br /> for(j=0; j<theRows.length; j++)<br /> {<br /> tableInfo+=theRows[j][1];<br /> }<br /> isDescending = !isDescending;<br /> currTable.outerHTML= theHeader + tableInfo +theFooter;<br /> return ;<br /> }<br /> //对数字进行比较<br /> function compareNumber(x, y)<br /> {<br /> //对货币格式的数据进行转化<br /> a = x[0].excludeChars(",").trim();<br /> b = y[0].excludeChars(",").trim();<br /> <br /> if(a==""){a=0;}<br /> if(b==""){b=0;}<br /> if(isDescending)<br /> {<br /> return parseFloat(b) - parseFloat(a);<br /> }<br /> else<br /> {<br /> return parseFloat(a) - parseFloat(b);<br /> }<br /> }<br /> //对字符串进行比较<br /> function compareString(x, y)<br /> {<br /> if(isDescending)<br /> {<br /> if(x[0]>y[0]) return -1;<br /> else if(x[0]<y[0]) return 1;<br /> else return 0;<br /> }<br /> else<br /> {<br /> if(x[0]<y[0]) return -1;<br /> else if(x[0]>y[0]) return 1;<br /> else return 0;<br /> }<br /> }<br /> //对时间进行比较<br /> function compareDate(x,y){<br /> var arr=x[0].split("-"); <br /> var starttime=new Date(arr[0],arr[1],arr[2]); <br /> var starttimes=starttime.getTime(); <br /> var arrs=y[0].split("-"); <br /> var lktime=new Date(arrs[0],arrs[1],arrs[2]); <br /> var lktimes=lktime.getTime();<br /> <br /> if(isDescending)<br /> {<br /> return lktimes - starttimes;<br /> }<br /> else<br /> {<br /> return starttimes - lktimes;<br /> }<br /> }<br /> //去除字符串中所有指定的字符串<br /> String.prototype.excludeChars = function(chars){<br /> var matching = new RegExp(chars , "g") ;<br /> return this.replace(matching , '') ;<br /> }<br /> 希望本文所述对大家的javascript程序设计有所帮助。