如何用js实现表格内数字排序,点击表头可实现升序或降序排列。在网上搜了很长时间,看不懂,网上的有字符串和数字混排,太乱了。我现在只要数字排序,最好能有注释,简单点。谢谢各位了!!!

解决方案 »

  1.   

    可以试试这个table排序
    把type设为"int"就是按数字大小排序
      

  2.   

    array.sort(function(a1,a2){return a1>a2?1:-1;});//从小到大排序.
      

  3.   

    能力有限,不知满足要求不?   <script type="text/javascript">
            function intSort() {
                var t1 = document.getElementById("t1");
                var trs = t1.getElementsByTagName("tr");
                //将第一列的所有单元格值合并成数组
                var sorttmp = "";
                for (var i = 1; i < trs.length; i++) {
                    sorttmp += "," + t1.rows[i].cells[0].innerText;
                }
                sorttmp = t1.rows[0].cells[0].innerText + sorttmp;
                var sort = sorttmp.split(",");
                //冒泡排序 
                var tmp = 0;
                var isOK = false;
                while (!isOK) {
                    isOK = true;
                    for (var i = 0; i < sort.length - 1; i++) {
                        if (parseInt(sort[i]) > parseInt(sort[i + 1])) {//parseInt是关键,否则是string
                            tmp = parseInt(sort[i]);
                            sort[i] = parseInt(sort[i + 1]);
                            sort[i + 1] = tmp;
                            isOK = false;
                        }
                    }
                }
                for (var i = 0; i < trs.length - 1; i++) {
                    t1.rows[i].cells[0].innerText = sort[i];
                }
            }    </script></head>
    <body>
        <table id="t1" border="1">
            <tr>
                <td>45</td>
                <td></td>
            </tr>
            <tr>
                <td>264</td>
                <td></td>
            </tr>
            <tr>
                <td>234</td>
                <td></td>
            </tr>
            <tr>
                <td>17</td>
                <td></td>
            </tr>
            <tr>
                <td>31</td>
                <td></td>
            </tr>
            <tr>
                <td>77</td>
                <td></td>
            </tr>
            <tr>
                <td>89</td>
                <td></td>
            </tr>
            <tr>
                <td>99</td>
                <td></td>
            </tr>
            <tr>
                <td>65</td>
                <td></td>
            </tr>
            <tr>
                <td>312</td>
                <td></td>
            </tr>
            <tr>
                <td>
                    <input type="button" value="数字排序" onclick="intSort()" /></td>
                <td>
                    <input type="button" value="字母排序" /></td>
            </tr>
        </table>
      

  4.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function orderasc(flag){
    var tbody = document.getElementById("tbodyid");
    var trs = tbody.children;
    for(var i = 0;i<trs.length-1;i++){
    for(var j=0;j<trs.length-i-1;j++){
    var tr1 = trs[j];
    var tr2 = trs[j+1];
    var td1i = parseInt(tr1.children[0].innerHTML,10);
    var td2i = parseInt(tr2.children[0].innerHTML,10); if(flag==0){
    if(td1i > td2i){
    tbody.insertBefore(tr2,tr1);
    }
    }else{
    if(td1i < td2i){
    tbody.insertBefore(tr2,tr1);
    }
    }
    }
    }
    }//-->
    </SCRIPT>
    </HEAD><BODY>
    <TABLE border="1" id="tabid">
    <TR>
    <Th>编号<font onclick="orderasc(0)">升</font><font onclick="orderasc(1)">降</font></Th>
    <Th>名称</Th>
    </TR>
    <tbody id="tbodyid">
    <TR>
    <TD>1</TD>
    <TD>xm</TD>
    </TR>
    <TR>
    <TD>10</TD>
    <TD>qhit</TD>
    </TR>
    <TR>
    <TD>5</TD>
    <TD>xmqhit</TD>
    </TR>
    </tbody>
    </TABLE>
    </BODY>
    </HTML>
      

  5.   

    function sort(tableId, sortColumn,nodeType) { 


        var table = document.getElementById(tableId);  
        
        var tableBody = table.tBodies[0];   
        var tableRows = tableBody.rows;   
           
           
        var rowArray = new Array();   
        for (var i = 0; i < tableRows.length; i++) {   
            rowArray[i] = tableRows[i];   
        }   
        if (table.sortColumn == sortColumn) { 
        
            rowArray.reverse();   
        } else {   
            rowArray.sort(generateCompareTR(sortColumn, nodeType));   
        }   
        var tbodyFragment = document.createDocumentFragment();   
        for (var i = 0; i < rowArray.length; i++) {   
            tbodyFragment.appendChild(rowArray[i]);   
        }   
        tableBody.appendChild(tbodyFragment);   
        table.sortColumn = sortColumn;   
    }   
      
      
    function generateCompareTR(sortColumn, nodeType) {   
        return function compareTR(trLeft, trRight) {   
            var leftValue = convert(trLeft.cells[sortColumn].firstChild.nodeValue, nodeType);   
            var rightValue = convert(trRight.cells[sortColumn].firstChild.nodeValue, nodeType);   
            if (leftValue < rightValue) {   
                return -1;   
            } else {   
                if (leftValue > rightValue) {   
                    return 1;   
                } else {   
                    return 0;   
                }   
            }   
        };   
    }   
      
      
    function convert(value, dataType) {   
        switch (dataType) {   
          case "int":   
            return parseInt(value);   
          case "float":   
            return parseFloat(value);   
          case "date":   
            return new Date(Date.parse(value));   
          default:   
            return value.toString();   
        }   
    }上面的是js方法 然后给表头添加onclick事件 onclick="sort('table2',2,'float')" 其中 table2为该表头所在的table id,2 为要排序的字段是table的第几个字段,float为数据类型
      

  6.   

    http://blog.csdn.net/heardy/archive/2010/12/31/6109233.aspx
      

  7.   

    http://developer.yahoo.com/yui/examples/datatable/dt_basic.html