还好没人来 上面那个代码还没弄好 
下面这个是对的 单列的排序 
<table border=1 id="a">
<thead>
<th onclick=aa("a") style="cursor:pointer">b</th>


</thead>
<tbody >
<tr>
<td>sss</td>


</tr>
<tr>
<td>ccc</td>


</tr>
</tbody>

</table>
<script >
 function bb(o1,o2){
var x1=o1.cells[0].firstChild.nodeValue;
var x2=o2.cells[0].firstChild.nodeValue;
return x1.localeCompare(x2);
}function aa(a1){
var a = document.getElementById(a1);
var b = a.tBodies[0];
var c = b.rows;
var d = [];


//d=c.slice(0);for (var i = 0; i < c.length; i++) {
d[i] = c[i];
}

d.sort(bb);
var e = document.createDocumentFragment();
for (var i = 0; i < c.length; i++) 
b.appendChild(d[i]);
//b.appendChild(e);

}
</script>

解决方案 »

  1.   

    因为对象c不是一个数组,slice是数组才有的<table border=1 id="a">
        <thead>
            <th onclick=aa("a") style="cursor:pointer">b</th>
            
            
        </thead>
        <tbody >
        <tr>
            <td>sss</td>
            
            
        </tr>
        <tr>
            <td>ccc</td>
            
            
        </tr>
        </tbody>
        
    </table>
    <script >
     function bb(o1,o2){
            var x1=o1.cells[0].firstChild.nodeValue;
            var x2=o2.cells[0].firstChild.nodeValue;
            return x1.localeCompare(x2);
        }function aa(a1){
        var a = document.getElementById(a1);
        var b = a.tBodies[0];
        var e = b.rows;
        var d = [];
        var c=new Array()
        for(var i=0;i<e.length;i++)
        {
           c[i]=e[i]
        }
        alert(typeof c)
        d=c.slice(0);for (var i = 0; i < c.length; i++) {
            d[i] = c[i];
        }
        d.sort(bb);
            var e = document.createDocumentFragment();
            for (var i = 0; i < c.length; i++) 
                b.appendChild(d[i]);
            //b.appendChild(e);
        
    }
    </script>