《JavaScript進階程式設計》閱讀筆記(十九):表格排序

來源:互聯網
上載者:User
排序代碼
function SortTable(sTableID, iCol, sDataType){    this.oTable=document.getElementById(sTableID);    this.oTBody=this.oTable.tBodies[0];    this.colDataRows=this.oTBody.rows;    this.aTRs=[];    this.iCol=iCol;    this.sDataType=sDataType;}SortTable.prototype={    convert:function(sValue, sDataType){        switch(sDataType){            case "int":                return parseInt(sValue);            case "float":                return parseFloat(sValue);            case "date":                return new Date(sValue);            default:                return sValue.toString();        }    },    generateCompareTRs:function(iCol, sDataType, that){        return function compareTRs(oTR1,oTR2){                    var vValue1= that.convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType),                        vValue2= that.convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);                    if(vValue1 < vValue2){                        return -1;                    } else if(vValue1 > vValue2){                        return 1;                    } else{                        return 0;                    }               };    },    sort:function(){        for(var i=0,l=this.colDataRows.length;i<l;i++){            this.aTRs.push(this.colDataRows[i]);        }        if(this.oTable.sortCol === this.iCol){            this.aTRs.reverse();        } else {            this.aTRs.sort(this.generateCompareTRs(this.iCol, this.sDataType, this));        }        var oFragment=document.createDocumentFragment();        for(var i=0,l=this.aTRs.length;i<l;i++){            oFragment.appendChild(this.aTRs[i]);        }        this.oTBody.appendChild(oFragment);        this.oTable.sortCol = this.iCol;    }}
調用樣本
function bindSortTable(sTableID, iCol, sDataType){    var table=document.getElementById(sTableID),        ftr=table.tHead.rows[0],        tds=ftr.cells;    if(tds[iCol]){        tds[iCol].onclick=function(){            var sortTable=new SortTable(sTableID, iCol, sDataType);            sortTable.sort();        }    }}window.onload=function(){    bindSortTable("tblSort",0);    bindSortTable("tblSort",1);    bindSortTable("tblSort",2,"int");    bindSortTable("tblSort",3,"float");    bindSortTable("tblSort",4,"date");}
將table中的td順序顛倒
function reverseTD(tbid){    var table=document.getElementById(tbid),        tbody=table.tBodies[0],        trs=tbody.rows,        cols=[];    for(var i=0,j=trs.length;i<j;i++){        cols = trs[i].cells;        trs[i]=document.createElement("tr");        for(var m=cols.length-1;m>=0;m--){            trs[i].appendChild(cols[m]);        }    }}//TestreverseTD("tableid");
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.