这篇文章主要介绍了js表头排序实现方法,涉及数字、字母、字符串比较及排序等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了js表头排序实现方法。分享给大家供大家参考。
具体实现方法如下:
代码如下:
<script type=text/javascript>
//是否递减排序
var isdescending = true;
/*****************************************
* 要排序的行必须放到<tbody></tbody>标签中
* tableid:排序表格id
* colno:排序的列号,即第几列,从0开始
* startrowno:排序的开始行号,从0开始
* sortlength:要排序的行数,
* type:排序列的类型
*/
function sort(tableid, colno ,startrowno, sortlength, type)
{
//如果要排序的行数是1或是0,则不对其进行排序操作
if(sortlength<=1){
return;
}
var currtable = document.getelementbyid(tableid);
var theheader = currtable.outerhtml.substring(0, currtable.outerhtml.indexof('<tbody>')+7)
var thefooter = currtable.outerhtml.substring(currtable.outerhtml.indexof('</tbody>')-8);
//这里的行数是去掉表头表头行和表位行的行数
var therows = new array(sortlength);
//对表中的数据进行循环
for(i=startrowno; i<sortlength+startrowno; i++)
{
therows[i-startrowno] = new array(currtable.rows[i].cells[colno].innertext.tolowercase(), currtable.rows[i].outerhtml);
}
if(type.touppercase()=='number')
{
therows.sort(comparenumber);
}
else if(type.touppercase()=='date')
therows.sort(comparedate);
else if(type.touppercase()=='string')
therows.sort(comparestring);
var tableinfo=''
for(j=0; j<therows.length; j++)
{
tableinfo+=therows[j][1];
}
isdescending = !isdescending;
currtable.outerhtml= theheader + tableinfo +thefooter;
return ;
}
//对数字进行比较
function comparenumber(x, y)
{
//对货币格式的数据进行转化
a = x[0].excludechars(,).trim();
b = y[0].excludechars(,).trim();
if(a==){a=0;}
if(b==){b=0;}
if(isdescending)
{
return parsefloat(b) - parsefloat(a);
}
else
{
return parsefloat(a) - parsefloat(b);
}
}
//对字符串进行比较
function comparestring(x, y)
{
if(isdescending)
{
if(x[0]>y[0]) return -1;
else if(x[0]<y[0]) return 1;
else return 0;
}
else
{
if(x[0]<y[0]) return -1;
else if(x[0]>y[0]) return 1;
else return 0;
}
}
//对时间进行比较
function comparedate(x,y){
var arr=x[0].split(-);
var starttime=new date(arr[0],arr[1],arr[2]);
var starttimes=starttime.gettime();
var arrs=y[0].split(-);
var lktime=new date(arrs[0],arrs[1],arrs[2]);
var lktimes=lktime.gettime();
if(isdescending)
{
return lktimes - starttimes;
}
else
{
return starttimes - lktimes;
}
}
//去除字符串中所有指定的字符串
string.prototype.excludechars = function(chars){
var matching = new regexp(chars , g) ;
return this.replace(matching , '') ;
}
</script>
希望本文所述对大家的javascript程序设计有所帮助。