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>

          逆序排列:
          上面只對表格進(jìn)行了排列,如果要實(shí)現(xiàn)想Microsoft Outlook那樣,第一次點(diǎn)擊是排序,如果再點(diǎn)擊一次,將會(huì)對此列進(jìn)行逆序排列。
          修改以后的代碼為:

          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)  編輯  收藏 所屬分類: HTMLJavaScript
          主站蜘蛛池模板: 启东市| 云阳县| 龙门县| 黄大仙区| 邓州市| 依兰县| 岗巴县| 乐昌市| 额敏县| 明星| 南陵县| 泰来县| 阿拉善右旗| 乐昌市| 博兴县| 天长市| 灯塔市| 育儿| 马尔康县| 佛冈县| 龙口市| 临泽县| 玉山县| 偏关县| 彭水| 乐山市| 乌拉特后旗| 思南县| 徐水县| 曲麻莱县| 社旗县| 化隆| 左贡县| 张家川| 林西县| 岱山县| 濉溪县| 汨罗市| 阿瓦提县| 响水县| 芮城县|