您的位置:首页 > Web前端 > JavaScript

js实现表格排序(兼容各浏览器)

2013-05-14 18:13 477 查看
本来表格排序已经写完了,webkit下已经完美呈现,可.....坑爹的 IE ,唉我去了,愣是调了一下午,所以想粘出来给大家瞅瞅,大神请无视....

function sortrows(Table,n){                             //参数Table是通过getElementById()获取的表格对象,参数 n 代表按照表格第几列内容排序
var rows = Table.getElementsByTagName("tr");
//rows = Array.prototype.slice.call(rows,1);         IE 不兼容,故删之用下面的代替
var k = rows.length;
try{
rows = Array.prototype.slice.call(rows);
}
catch(e){
var ret = [];
while(k){
ret[--k] = rows[k];      					//Clone数组
}
rows = ret;
}                          							//至此 已将类数组对象转换成了数组对象
rows = rows.splice(1,rows.length);             		//去掉表格第一行,因为可能是标题字段等不参与排序
rows.sort(function (row1,row2){            			//js排序函数,具体用法可以百度一下
var cell1 = row1.getElementsByTagName("td")
;
var cell2 = row2.getElementsByTagName("td")
;
var val1 = cell1.innerHTML;          			//如果有需要可以考虑textContent及innerText方法
var val2 = cell2.innerHTML;
return val1.localeCompare(val2);         		//按汉语拼音排序,可自定义 ^_^
});

Table = document.getElementsByTagName("tbody")[0];  //上网查的兼容IE的table.appendChild代码 ,即:ie中表格不能直接用appendChil方法
for(var i=0;i<rows.length;i++){
Table.appendChild(rows[i]);
}
}


好了,函数写完了,看看怎么调用吧

将表格设置 ID 如:<table id="t_table">……</table>

简单起见,为排序按钮配置响应时间,当然也可以用document.getElementById("t_table").getElementsByTagName("tr")[0].getElementsByTagName("td")[i].onclick = function () {……}为表格注册事件,选简单的如:

<td style="cursor:pointer" title="课程排序" onclick="ownSort(0)">课程</td>
<td style="cursor:pointer" title="教师排序" onclick="ownSort(1)">教师</td>
<td style="cursor:pointer" title="时间排序" onclick="ownSort(2)">时间</td>
<td style="cursor:pointer" title="地点排序" onclick="ownSort(3)">地点</td>
<td style="cursor:pointer" title="班级排序" onclick="ownSort(4)">班级</td>

调用上述表格函数:

function ownSort(m)
{
var Table = document.getElementById("t_table");
sortrows(Table,m);
}




































































                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: