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