表格客户端排序
来源: http://www.zyhowe.com/index/topicDetail.aspx?type=200100&topicid=288<html>
<head>
<title>测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><script type="text/javascript" language="javascript">var TrArray=new Array();
function addSortTableClient(tableid,rowheadnum){
var tableobj = document.getElementById(tableid);
if(!tableobj) return;
//1.1 先补充colspan
for(var i=0;i<rowheadnum;i++){
var r=tableobj.rows[i];
for(var j=r.cells.length-1;j>=0;j--){
var c=r.cells[j];
if(c.colSpan>1){
for(k=1;k<=c.colSpan-1;k++){
var newtd=tableobj.rows[i].insertCell(j+1);
//newtd.innerHTML=i+"_"+j+"_"+(j+k);
newtd.style.display="none";
}
// c.colSpan=1;
}
}
} //1.2 再补充rowspan
for(var i=rowheadnum-1;i>=0;i--){
var r=tableobj.rows[i];
for(var j=r.cells.length-1;j>=0;j--){
var c=r.cells[j];
if(c.rowSpan>1){
for(k=1;k<=c.rowSpan-1;k++){
var newtd=tableobj.rows[i+k].insertCell(j);
newtd.style.display="none";
}
//c.rowSpan=1;
}
}
}
//2.复制所有TBODY内所有TR到数组
for(var i=0;i<tableobj.rows.length-rowheadnum;i++){
TrArray[i]=tableobj.rows[i+rowheadnum];
}
//3.添加列头排序
for(var i=0;i<rowheadnum&&i<tableobj.rows.length;i++){
var r = tableobj.rows[i];
for(var j=0;j<r.cells.length;j++){
var c = r.cells[j];
var s = c.innerHTML;
if(c.type=="")c.type="Number";
c.innerHTML = "<a href='#' onclick='javascript:sortTableClient(\""+tableid+"\",\""+rowheadnum+"\",\""+i+"\",\""+j+"\",\""+c.type+"\",\"asc\");'>"+s+"</a>";
}
}
}
var oldcolIndex=-1;
var oldrowIndex=-1;
function sortTableClient(tableid,rowheadnum,rowIndex,colIndex,typename,sortby){
var tableobj = document.getElementById(tableid);
if(!tableobj) return;
//alert(rowIndex+","+colIndex);
function CaseInsensitiveString(s){//转换为大写
return String(s).toUpperCase();
}
function parseDate(s){//转换为毫秒的时间
return Date.parse(s.replace(/\-/g,"/"));
}
function parseNumber(s){
return parseFloat(s.replace(/,/,""));
} var fTypeCast=String;//未指定的时候的方式
switch(typename){
case "Date"://时间的处理方式
fTypeCast=parseDate;
break;
case "CaseInsensitiveString"://大小写不区分
fTypeCast=CaseInsensitiveString;
break;
case "Number"://数字的处理方式
fTypeCast=parseNumber;
break;
default:
fTypeCast=String;
break;
}
TrArray.sort(
function (a,b){
if(fTypeCast(a.cells[colIndex].innerText)<fTypeCast(b.cells[colIndex].innerText))
return (sortby=="asc")?-1:1;
if(fTypeCast(a.cells[colIndex].innerText)>fTypeCast(b.cells[colIndex].innerText))
return (sortby=="asc")?1:-1;
return 0;
}
);
var c = tableobj.rows[rowIndex].cells[colIndex];
var s = c.innerHTML;
if(sortby=="desc"){
s=s.replace(/desc/gi,"asc");
if(s.indexOf("↑")>=0||s.indexOf("↓")>=0){
s=s.replace(/↓/gi,"↑");
}else{
s=s.replace(/<\/A>/gi,"↑</a>");
}
}else if(sortby=="asc"){
s=s.replace(/asc/gi,"desc");
if(s.indexOf("↑")>=0||s.indexOf("↓")>=0){
s=s.replace(/↑/gi,"↓");
}else{
s=s.replace(/<\/A>/gi,"↓</a>");
}
}
c.innerHTML =s;
if(rowIndex!=oldrowIndex||colIndex!=oldcolIndex){
if(oldcolIndex!=-1&&oldrowIndex!=-1){
var c1 = tableobj.rows[oldrowIndex].cells[oldcolIndex];
var s1 = c1.innerHTML;
s1=s1.replace(/(<img)[^<]*/gi,"");
c1.innerHTML=s1;
}
oldrowIndex=rowIndex;
oldcolIndex=colIndex;
} var k=0;
for(var i=rowheadnum;i<tableobj.rows.length;i++){
tableobj.rows[i].swapNode(TrArray[k++]);
}
}
</script>
<table id='SortTable' width=800 border=1>
<tr>
<td nowrap rowspan='2' colspan='1' type='Number' >时间</td>
<td nowrap rowspan='1' colspan='2' type='Number' >固定资产投资额</td>
<td nowrap rowspan='1' colspan='2' type='Number' >GDP</td>
</tr>
<tr>
<td nowrap rowspan='1' colspan='1' type='Number' >累计值(亿元)</td>
<td nowrap rowspan='1' colspan='1' type='Number' >累计增长(%)</td>
<td nowrap rowspan='1' colspan='1' type='Number' >累计值(亿元)</td>
<td nowrap rowspan='1' colspan='1' type='Number' >累计增长(%)</td>
</tr>
<tr>
<td nowrap>200812</td>
<td align=right nowrap>148,167.00</td>
<td align=right nowrap>26.10</td>
<td align=right nowrap>300,670.00</td>
<td align=right nowrap>9.00</td>
</tr>
<tr>
<td nowrap>200809</td>
<td align=right nowrap>99,870.71</td>
<td align=right nowrap>27.60</td>
<td align=right nowrap>201,631.00</td>
<td align=right nowrap>9.90</td>
</tr>
<tr >
<td nowrap>200806</td>
<td align=right nowrap>58,435.98</td>
<td align=right nowrap>26.80</td>
<td align=right nowrap>130,619.00</td>
<td align=right nowrap>10.40</td>
</tr>
<tr >
<td nowrap>200803</td>
<td align=right nowrap>18,316.94</td>
<td align=right nowrap>25.90</td>
<td align=right nowrap>61,491.00</td>
<td align=right nowrap>10.60</td>
</tr>
<tr >
<td nowrap>200712</td>
<td align=right nowrap>117,413.91</td>
<td align=right nowrap>25.80</td>
<td align=right nowrap>246,619.00</td>
<td align=right nowrap>11.40</td>
</tr>
<tr >
<td nowrap>200709</td>
<td align=right nowrap>78,246.78</td>
<td align=right nowrap>26.40</td>
<td align=right nowrap>166,043.00</td>
<td align=right nowrap>11.50</td>
</tr>
<tr >
<td nowrap>200706</td>
<td align=right nowrap>46,077.82</td>
<td align=right nowrap>26.70</td>
<td align=right nowrap>106,768.00</td>
<td align=right nowrap>11.50</td>
</tr><tr >
<td nowrap>200703</td>
<td align=right nowrap>14,543.61</td>
<td align=right nowrap>25.30</td>
<td align=right nowrap>50,287.00</td>
<td align=right nowrap>11.10</td>
</tr><tr >
<td nowrap>200612</td>
<td align=right nowrap>93,472.36</td>
<td align=right nowrap>24.50</td>
<td align=right nowrap>210,871.00</td>
<td align=right nowrap>11.10</td>
</tr><tr >
<td nowrap>200609</td>
<td align=right nowrap>61,880.12</td>
<td align=right nowrap>28.20</td>
<td align=right nowrap>142,898.30</td>
<td align=right nowrap>10.80</td>
</tr><tr >
<td nowrap>200606</td>
<td align=right nowrap>36,368.35</td>
<td align=right nowrap>31.30</td>
<td align=right nowrap>92,369.40</td>
<td align=right nowrap>11.00</td>
</tr>
<tr >
<td nowrap>200603</td>
<td align=right nowrap>11,608.40</td>
<td align=right nowrap>29.80</td>
<td align=right nowrap>43,851.00</td>
<td align=right nowrap>10.40</td>
</tr><tr >
<td nowrap>200512</td>
<td align=right nowrap>75,096.48</td>
<td align=right nowrap>27.20</td>
<td align=right nowrap>183,867.90</td>
<td align=right nowrap>10.40</td>
</tr><tr >
<td nowrap>200509</td>
<td align=right nowrap>48,741.49</td>
<td align=right nowrap>27.72</td>
<td align=right nowrap>125,984.90</td>
<td align=right nowrap>10.40</td>
</tr><tr >
<td nowrap>200506</td>
<td align=right nowrap>27,967.00</td>
<td align=right nowrap>27.10</td>
<td align=right nowrap>81,412.80</td>
<td align=right nowrap>10.50</td>
</tr><tr >
<td nowrap>200503</td>
<td align=right nowrap>9,036.68</td>
<td align=right nowrap>25.30</td>
<td align=right nowrap>38,848.60</td>
<td align=right nowrap>10.50</td>
</tr><tr >
<td nowrap>200412</td>
<td align=right nowrap>58,620.28</td>
<td align=right nowrap>27.60</td>
<td align=right nowrap>136,875.90</td>
<td align=right nowrap>9.50</td>
</tr><tr >
<td nowrap>200409</td>
<td align=right nowrap>38,028.34</td>
<td align=right nowrap>29.90</td>
<td align=right nowrap>93,495.20</td>
<td align=right nowrap>9.50</td>
</tr>
<tr >
<td nowrap>200406</td>
<td align=right nowrap>21,843.97</td>
<td align=right nowrap>31.00</td>
<td align=right nowrap>59,042.70</td>
<td align=right nowrap>9.70</td>
</tr><tr >
<td nowrap>200403</td>
<td align=right nowrap>7,058.48</td>
<td align=right nowrap>47.78</td>
<td align=right nowrap>27,262.00</td>
<td align=right nowrap>9.80</td>
</tr>
</table>
<script language="javascript">
addSortTableClient("SortTable",2);
</script>
</body>
</html>
来源: http://www.zyhowe.com/index/topicDetail.aspx?type=200100&topicid=288<html>
<head>
<title>测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><script type="text/javascript" language="javascript">var TrArray=new Array();
function addSortTableClient(tableid,rowheadnum){
var tableobj = document.getElementById(tableid);
if(!tableobj) return;
//1.1 先补充colspan
for(var i=0;i<rowheadnum;i++){
var r=tableobj.rows[i];
for(var j=r.cells.length-1;j>=0;j--){
var c=r.cells[j];
if(c.colSpan>1){
for(k=1;k<=c.colSpan-1;k++){
var newtd=tableobj.rows[i].insertCell(j+1);
//newtd.innerHTML=i+"_"+j+"_"+(j+k);
newtd.style.display="none";
}
// c.colSpan=1;
}
}
} //1.2 再补充rowspan
for(var i=rowheadnum-1;i>=0;i--){
var r=tableobj.rows[i];
for(var j=r.cells.length-1;j>=0;j--){
var c=r.cells[j];
if(c.rowSpan>1){
for(k=1;k<=c.rowSpan-1;k++){
var newtd=tableobj.rows[i+k].insertCell(j);
newtd.style.display="none";
}
//c.rowSpan=1;
}
}
}
//2.复制所有TBODY内所有TR到数组
for(var i=0;i<tableobj.rows.length-rowheadnum;i++){
TrArray[i]=tableobj.rows[i+rowheadnum];
}
//3.添加列头排序
for(var i=0;i<rowheadnum&&i<tableobj.rows.length;i++){
var r = tableobj.rows[i];
for(var j=0;j<r.cells.length;j++){
var c = r.cells[j];
var s = c.innerHTML;
if(c.type=="")c.type="Number";
c.innerHTML = "<a href='#' onclick='javascript:sortTableClient(\""+tableid+"\",\""+rowheadnum+"\",\""+i+"\",\""+j+"\",\""+c.type+"\",\"asc\");'>"+s+"</a>";
}
}
}
var oldcolIndex=-1;
var oldrowIndex=-1;
function sortTableClient(tableid,rowheadnum,rowIndex,colIndex,typename,sortby){
var tableobj = document.getElementById(tableid);
if(!tableobj) return;
//alert(rowIndex+","+colIndex);
function CaseInsensitiveString(s){//转换为大写
return String(s).toUpperCase();
}
function parseDate(s){//转换为毫秒的时间
return Date.parse(s.replace(/\-/g,"/"));
}
function parseNumber(s){
return parseFloat(s.replace(/,/,""));
} var fTypeCast=String;//未指定的时候的方式
switch(typename){
case "Date"://时间的处理方式
fTypeCast=parseDate;
break;
case "CaseInsensitiveString"://大小写不区分
fTypeCast=CaseInsensitiveString;
break;
case "Number"://数字的处理方式
fTypeCast=parseNumber;
break;
default:
fTypeCast=String;
break;
}
TrArray.sort(
function (a,b){
if(fTypeCast(a.cells[colIndex].innerText)<fTypeCast(b.cells[colIndex].innerText))
return (sortby=="asc")?-1:1;
if(fTypeCast(a.cells[colIndex].innerText)>fTypeCast(b.cells[colIndex].innerText))
return (sortby=="asc")?1:-1;
return 0;
}
);
var c = tableobj.rows[rowIndex].cells[colIndex];
var s = c.innerHTML;
if(sortby=="desc"){
s=s.replace(/desc/gi,"asc");
if(s.indexOf("↑")>=0||s.indexOf("↓")>=0){
s=s.replace(/↓/gi,"↑");
}else{
s=s.replace(/<\/A>/gi,"↑</a>");
}
}else if(sortby=="asc"){
s=s.replace(/asc/gi,"desc");
if(s.indexOf("↑")>=0||s.indexOf("↓")>=0){
s=s.replace(/↑/gi,"↓");
}else{
s=s.replace(/<\/A>/gi,"↓</a>");
}
}
c.innerHTML =s;
if(rowIndex!=oldrowIndex||colIndex!=oldcolIndex){
if(oldcolIndex!=-1&&oldrowIndex!=-1){
var c1 = tableobj.rows[oldrowIndex].cells[oldcolIndex];
var s1 = c1.innerHTML;
s1=s1.replace(/(<img)[^<]*/gi,"");
c1.innerHTML=s1;
}
oldrowIndex=rowIndex;
oldcolIndex=colIndex;
} var k=0;
for(var i=rowheadnum;i<tableobj.rows.length;i++){
tableobj.rows[i].swapNode(TrArray[k++]);
}
}
</script>
<table id='SortTable' width=800 border=1>
<tr>
<td nowrap rowspan='2' colspan='1' type='Number' >时间</td>
<td nowrap rowspan='1' colspan='2' type='Number' >固定资产投资额</td>
<td nowrap rowspan='1' colspan='2' type='Number' >GDP</td>
</tr>
<tr>
<td nowrap rowspan='1' colspan='1' type='Number' >累计值(亿元)</td>
<td nowrap rowspan='1' colspan='1' type='Number' >累计增长(%)</td>
<td nowrap rowspan='1' colspan='1' type='Number' >累计值(亿元)</td>
<td nowrap rowspan='1' colspan='1' type='Number' >累计增长(%)</td>
</tr>
<tr>
<td nowrap>200812</td>
<td align=right nowrap>148,167.00</td>
<td align=right nowrap>26.10</td>
<td align=right nowrap>300,670.00</td>
<td align=right nowrap>9.00</td>
</tr>
<tr>
<td nowrap>200809</td>
<td align=right nowrap>99,870.71</td>
<td align=right nowrap>27.60</td>
<td align=right nowrap>201,631.00</td>
<td align=right nowrap>9.90</td>
</tr>
<tr >
<td nowrap>200806</td>
<td align=right nowrap>58,435.98</td>
<td align=right nowrap>26.80</td>
<td align=right nowrap>130,619.00</td>
<td align=right nowrap>10.40</td>
</tr>
<tr >
<td nowrap>200803</td>
<td align=right nowrap>18,316.94</td>
<td align=right nowrap>25.90</td>
<td align=right nowrap>61,491.00</td>
<td align=right nowrap>10.60</td>
</tr>
<tr >
<td nowrap>200712</td>
<td align=right nowrap>117,413.91</td>
<td align=right nowrap>25.80</td>
<td align=right nowrap>246,619.00</td>
<td align=right nowrap>11.40</td>
</tr>
<tr >
<td nowrap>200709</td>
<td align=right nowrap>78,246.78</td>
<td align=right nowrap>26.40</td>
<td align=right nowrap>166,043.00</td>
<td align=right nowrap>11.50</td>
</tr>
<tr >
<td nowrap>200706</td>
<td align=right nowrap>46,077.82</td>
<td align=right nowrap>26.70</td>
<td align=right nowrap>106,768.00</td>
<td align=right nowrap>11.50</td>
</tr><tr >
<td nowrap>200703</td>
<td align=right nowrap>14,543.61</td>
<td align=right nowrap>25.30</td>
<td align=right nowrap>50,287.00</td>
<td align=right nowrap>11.10</td>
</tr><tr >
<td nowrap>200612</td>
<td align=right nowrap>93,472.36</td>
<td align=right nowrap>24.50</td>
<td align=right nowrap>210,871.00</td>
<td align=right nowrap>11.10</td>
</tr><tr >
<td nowrap>200609</td>
<td align=right nowrap>61,880.12</td>
<td align=right nowrap>28.20</td>
<td align=right nowrap>142,898.30</td>
<td align=right nowrap>10.80</td>
</tr><tr >
<td nowrap>200606</td>
<td align=right nowrap>36,368.35</td>
<td align=right nowrap>31.30</td>
<td align=right nowrap>92,369.40</td>
<td align=right nowrap>11.00</td>
</tr>
<tr >
<td nowrap>200603</td>
<td align=right nowrap>11,608.40</td>
<td align=right nowrap>29.80</td>
<td align=right nowrap>43,851.00</td>
<td align=right nowrap>10.40</td>
</tr><tr >
<td nowrap>200512</td>
<td align=right nowrap>75,096.48</td>
<td align=right nowrap>27.20</td>
<td align=right nowrap>183,867.90</td>
<td align=right nowrap>10.40</td>
</tr><tr >
<td nowrap>200509</td>
<td align=right nowrap>48,741.49</td>
<td align=right nowrap>27.72</td>
<td align=right nowrap>125,984.90</td>
<td align=right nowrap>10.40</td>
</tr><tr >
<td nowrap>200506</td>
<td align=right nowrap>27,967.00</td>
<td align=right nowrap>27.10</td>
<td align=right nowrap>81,412.80</td>
<td align=right nowrap>10.50</td>
</tr><tr >
<td nowrap>200503</td>
<td align=right nowrap>9,036.68</td>
<td align=right nowrap>25.30</td>
<td align=right nowrap>38,848.60</td>
<td align=right nowrap>10.50</td>
</tr><tr >
<td nowrap>200412</td>
<td align=right nowrap>58,620.28</td>
<td align=right nowrap>27.60</td>
<td align=right nowrap>136,875.90</td>
<td align=right nowrap>9.50</td>
</tr><tr >
<td nowrap>200409</td>
<td align=right nowrap>38,028.34</td>
<td align=right nowrap>29.90</td>
<td align=right nowrap>93,495.20</td>
<td align=right nowrap>9.50</td>
</tr>
<tr >
<td nowrap>200406</td>
<td align=right nowrap>21,843.97</td>
<td align=right nowrap>31.00</td>
<td align=right nowrap>59,042.70</td>
<td align=right nowrap>9.70</td>
</tr><tr >
<td nowrap>200403</td>
<td align=right nowrap>7,058.48</td>
<td align=right nowrap>47.78</td>
<td align=right nowrap>27,262.00</td>
<td align=right nowrap>9.80</td>
</tr>
</table>
<script language="javascript">
addSortTableClient("SortTable",2);
</script>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货