多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jquery > jquery.tablesorter.js中文表格排序的修改方法

jquery.tablesorter.js中文表格排序的修改方法

來源:程序員人生   發布時間:2013-12-29 11:06:46 閱讀次數:4198次

之前研究過一下表格排序。上網找了一些代碼研究了一下。勉強做了一個用著。后面發現當動態給單元格加超鏈接,或者列中存在一些空白,就排序不了了。

代碼: 仿一個網友的代碼寫的,不記得出自哪里了,改成可以支持中文排序,而且支持控件value的排序。 沒辦法,能力有限,只能。

代碼:

//轉換器,將列的字段類型轉換為可以排序的類型:String,int,float
function convert(sValue, sDataType)
{
switch(sDataType)
{
case "int":
return parseInt(sValue);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
default:
return sValue.toString();
}
}

// 漢字排序方法
function chrComp(a,b)
{
return a.localeCompare(b);
}

//排序函數產生器
function generateCompareTRs(iCol, sDataType,isinput,sDec)
{
return function compareTRs(oTR1, oTR2)
{
if(isinput == 1)
{
var vValue1 = convert(oTR1.getElementsByTagName("input")[iCol].value);
var vValue2 = convert(oTR2.getElementsByTagName("input")[iCol].value);
}
else
{
var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
}
if(sDec=='desc')
{
if(sDataType=='int')
{
return vValue1 == vValue2 ? 0 :(vValue1 - vValue2 <0 ? 1 : -1);
}
else if(sDataType =='cn')
{
if(chrComp(vValue1,vValue2)>0)
{
return -1;
}
else if(chrComp(vValue1,vValue2)<0)
{
return 1;
}
else
{
return 0;
}
}
else
{
if (vValue1 > vValue2) {
return -1;
} else if (vValue1 < vValue2) {
return 1;
} else {
return 0;
}
}

}
else if(sDec=='asc')
{
if(sDataType=='int')
{
return vValue1 == vValue2 ? 0 :(vValue1 - vValue2 >0 ? 1 : -1);
}
else if(sDataType =='cn')
{
return chrComp(vValue1,vValue2);
}
else
{
if (vValue1 > vValue2) {
return 1;
} else if (vValue1 < vValue2) {
return -1;
} else {
return 0;
}
}
}
};
}

//重置單元格的classname
function ChangeClsName(tr,num)
{
num = num%2?1:2;
num.toString();
for ( var i = 0 ; i < tr.childNodes.length; i ++ )
{
tr.childNodes[i].className = "row" + num
}
}

/*排序方法(主函數)
sTableID 表格的id
iCol表示列索引
1,當不是input類型時,iCol表示的是tr的第幾個td;
2,當是input類型時,則iCol表示在這個tr中的第幾個input;
sDataType表示該cell的數據類型或者該input的value 的數據類型. 默認是string,也可以int, float. cn是中文
isinput表示排序的內容是不是input(1是, 0否)
sDec表示倒序還是順序(desc, 默認順序), 避免出現input值改變之后再排序時候出現直接倒序的情況。
*/
function sortTable(sTableID, iCol, sDataType, isinput, sDec)
{
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
//將所有列放入數組
for (var i=0; i < colDataRows.length; i++)
{
aTRs[i] = colDataRows[i];
}

aTRs.sort(generateCompareTRs(iCol, sDataType,isinput, sDec));

var oFragment = document.createDocumentFragment();
for (var i=0; i < aTRs.length; i++)
{
oFragment.appendChild(aTRs[i]);
ChangeClsName(aTRs[i],i);
}
oTBody.appendChild(oFragment);
}

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产亚洲欧美日韩在线观看一区二区 | 精品国产一区二区三区免费 | 一区二区在线精品免费视频 | 亚洲短视频在线观看 | 亚洲最新永久在线观看 | 手机看片日韩欧美 | 亚州免费一级毛片 | 国产毛片一级国语版 | 久久精品三级视频 | 国产成人无精品久久久 | 国产欧美曰韩一区二区三区 | 欧美日韩一区二区三区视频在线观看 | 国产午夜精品片一区二区三区 | 鸡毛片| 999精品视频在线观看 | a亚洲视频| 亚洲精品国产福利在线观看 | 97碰碰碰免费公开在线视频 | 亚洲视频免费看 | 国产日韩一区在线精品欧美玲 | 中文字幕专区在线亚洲 | 性欧美videofree高| 亚洲第一页在线播放 | 激情视频在线观看免费 | 叼嘿视频免费大全网站 | 一区二区在线精品免费视频 | 最新免费黄色网址 | 亚洲综合亚洲综合网成人 | 国产v亚洲v天堂a无 国产v亚洲v天堂无码 | 日韩日韩日韩日韩日韩 | 最近中文字幕免费完整 | 国产资源视频 | 波多野结衣免费视频观看 | 香蕉大成网人站在线 | 国产小情侣激情小视频免费看 | 免费h视频| www视频在线 | 粉嫩00福利视频在线精品 | www久久久久| 性精品| 久爱免费观看在线网站 |