코드는 다음과 같습니다.
/*
테이블 정렬 기능
이벤트: 2012 7 24
DOM 노드
테이블을 정렬해야 하는 경우 테이블 속성에 sort="true"를 추가하세요.
ID는 유일하고 필요한 것입니다
이 js 파일은 직접 가져올 수 있습니다
생성된 저장소에는 설명이 없기 때문에
/
var Core = (function(window){
return {
init: function(){
Core.getTableById();
Core.setHeadClick();
},
I: function(id){
return document.getElementById(id);
},
N: function(name){
return document.getElementsByTagName(name); },
config: {
arr:[]
},
getTableById: function(){
var table_arr=Core.N("table")
for(var i = 0; i < table_arr.length; i ){
if(table_arr[i].getAttribute("sort")){
Core.arr.push(table_arr[i].getAttribute( "id"));
}
}
//alert(Core.config.arr)
},
setHeadClick: function(){
var arr = Core.config .arr;
if(!arr.length) return false;
for(var j = 0 ; j< arr.length;j ){
var thead = Core.I(arr[j]) .getElementsByTagName("thead")[0].getElementsByTagName("td");
for(var i = 0; i
if(thead[i].attachEvent){
thead[i].attachEvent("onclick",Core.sortList)
}else{
thead[i].addEventListener("click" ,Core.sortList,false)
}
//if(i==0){
// thead[i].click();
// }
}
}
},
sortList: 함수 (e){
var index=0,arr=[],sort="asc",table=null
if(e.srcElement){
index=e.srcElement.cellIndex; >sort=e.srcElement.getAttribute("sort");
e.srcElement.className=sort == "asc" ? "desc" : "asc"
e.srcElement.setAttribute("sort" , sort == "asc" ? "desc" : "asc");
table = Core.getTableId(e.srcElement)
}else{
index=e.currentTarget.cellIndex; sort=e.currentTarget.getAttribute("sort");
e.currentTarget.className=sort == "asc" ? "desc" :
e.currentTarget.setAttribute("sort", sort == "asc" ? "desc" : "asc");
table = Core.getTableId(e.currentTarget)
}
Core .getList(table,index,arr); Core.updateList(table,sort,arr);
},
getTableId: function(p){
for(var i=0,n =p;n=n.parentNode;i ){
if(i>100) break;
if(n.nodeName=="TABLE"){
//alert(n.nodeName/* n.getAttribute("id")*/)
return n
}
}
},
getList: function (table,index,arr){
var table = table.getElementsByTagName("tbody")[0]; 🎜>for(var i = 0; ivar item = table.rows[i]
for(var j = 0; jvar jtem = item.cells[index];
if(jtem.innerHTML){
//alert(jtem.innerHTML )
arr[i]=jtem.innerHTML;
}
break;
}
}
},
updateList: function (table,sort,arr){
var table = table.getElementsByTagName("tbody") [0];
for(var i = 0; ifor(var j = i 1;jif(sort= ="asc"){
if(arr[i] > arr[j]){
var rwos=table.rows[i].cloneNode (true)
table.replaceChild(table. 행[j],table.rows[i]);
if(j 1==arr.length){
//table.insertBefore(rwos ,null)
table.appendChild(rwos)
}else{
table.insertBefore(rwos,table.rows[j])
}
var tim= arr[i]
arr.splice(i,1,arr [j]);
arr.splice(j,1,tim);
}
}else{
if(arr[i ] < arr[j]){
var rwos=table.rows[i].cloneNode(true);
table.replaceChild(table.rows[j],table.rows[i]); if(j 1==arr.length)
//table.insertBefore(rwos,null);
table.appendChild(rwos)
}else{
table.insertBefore(rwos ,table.rows[j])
}
var tim= arr[i];
arr.splice(i,1,arr[j])
arr.splice(j, 1,tim)
}
}
}
}
}
})(창)
window.onload=Core.init;