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>

          逆序排列:
          上面只對表格進行了排列,如果要實現(xiàn)想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 周銳 閱讀(261) 評論(0)  編輯  收藏 所屬分類: HTMLJavaScript
          主站蜘蛛池模板: 右玉县| 万年县| 乃东县| 昌图县| 宜昌市| 玉田县| 七台河市| 攀枝花市| 安图县| 龙泉市| 南靖县| 原阳县| 松滋市| 永康市| 鸡东县| 晋州市| 洛隆县| 富源县| 兴安县| 永康市| 富川| 九龙坡区| 宜都市| 忻州市| 凤庆县| 兰考县| 米泉市| 新泰市| 宁安市| 文昌市| 上杭县| 泸溪县| 旬阳县| 汾阳市| 福鼎市| 招远市| 广元市| 仙桃市| 武胜县| 怀集县| 禹州市|