posts - 431,  comments - 344,  trackbacks - 0
          <html>
            <head>
              <title>Sort.html</title>
           <script type="text/javascript">
            function generateCompareTRs(iCol) {
             return function compareTRs(oTR1, oTR2) {
              var sValue1 = oTR1.cells[iCol].firstChild.nodeValue;
              var sValue2 = oTR2.cells[iCol].firstChild.nodeValue;
              return sValue1.localeCompare(sValue2);
             }
            }
            
            function sortTable(sTableID, iCol) {
             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.push(colDataRows[i]);
             }
             
             aTRs.sort(generateCompareTRs(iCol));
             
             var oFragment = document.createDocumentFragment();
             for (var i = 0; i < aTRs.length; i++) {
              oFragment.appendChild(aTRs[i]);
             }
             
             oTBody.appendChild(oFragment);
            }
           </script>
            </head>
           
            <body>
              This is my HTML page. <br>
              <table border="1" id="tblSort">
               <thead>
                <tr>
                 <th onclick="sortTable('tblSort', 0)" style="cursor:pointer">Last Name</th>
                 <th onclick="sortTable('tblSort', 1)" style="cursor:pointer">First Name</th>
                </tr>
               </thead>
               <tbody>
                <tr>
                 <td>Smith</td>
                 <td>John</td>
                </tr>
                <tr>
                 <td>Johnson</td>
                 <td>Betty</td>
                </tr>
                <tr>
                 <td>Henderson</td>
                 <td>Nathan</td>
                </tr>
                <tr>
                 <td>Williams</td>
                 <td>James</td>
                </tr>
                <tr>
                 <td>Gilliams</td>
                 <td>Michael</td>
                </tr>
                <tr>
                 <td>Walker</td>
                 <td>Matthew</td>
                </tr>
               </tbody>
              </table>
            </body>
          </html>

          逆序排列:
          上面只對表格進行了排列,如果要實現想Microsoft Outlook那樣,第一次點擊是排序,如果再點擊一次,將會對此列進行逆序排列。
          修改以后的代碼為:

          function sortTable(sTableID, iCol) {
             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.push(colDataRows[i]);
             }
             
             if (oTable.sortCol == iCol){
              aTRs.reverse();
             } else {
              aTRs.sort(generateCompareTRs(iCol));
             }
           
            var oFragment = document.createDocumentFragment();
             for (var i = 0; i < aTRs.length; i++) {
              oFragment.appendChild(aTRs[i]);
             }
             
             oTBody.appendChild(oFragment);
             oTable.sortCol = iCol;
            }

          posted on 2008-01-24 12:24 周銳 閱讀(257) 評論(0)  編輯  收藏 所屬分類: HTML 、JavaScript
          主站蜘蛛池模板: 吉林市| 子洲县| 德江县| 太仆寺旗| 芷江| 遂平县| 肃南| 海丰县| 焉耆| 山阳县| 武威市| 杭州市| 宣汉县| SHOW| 通河县| 开封市| 淮滨县| 昌邑市| 张家港市| 清水河县| 承德县| 达孜县| 福鼎市| 迭部县| 巢湖市| 清水河县| 库车县| 平顶山市| 焦作市| 南城县| 宁陕县| 莱西市| 陇川县| 阜平县| 大足县| 乡城县| 麻栗坡县| 灵武市| 兴和县| 溧阳市| 政和县|