本帖最后由 baocai001 于 2012-06-07 20:55:53 编辑

解决方案 »

  1.   

    //var tbdnode = tabnode.childNodes[0];
    var tbdnode = tabnode.getElementsByTagName('tbody')[0];childNodes的兼容性问题。IE会忽略文档中的不可见的空白符(回车、换行、空格、TAB等),标准浏览器下会将这些空白符作为文本节点,所以tabnode.childNodes[0]实际上获取到的是一个文本节点。(因为html代码中<table>、<tr>标签之间有换行、tab等符号)。
      

  2.   

    1楼正解,还有一点需要注意,如果年龄列没有html标签,推荐用innerHTML(innerText在早期的火狐中不被支持,火狐支持的是textContent),改写了一下排序方法
    var sortId=1;
    function sorttable(){
        var table=document.getElementsByTagName("table")[0],
            tbody,
            trs=table.rows,
            trHead=trs[0],
            rows=[],
            i=1,
            len=trs.length;    if(len<=2) return;
        tbody=trHead.parentNode;
        
        for(;i<len;i++){
            rows.push(trs[i]);
        } 
        
        //数组自带排序
        rows.sort(function(tr1,tr2){
            //执行减法操作时会自动执行类型转换
            return getAge(tr1)-getAge(tr2)>0?sortId:-sortId;
        });
        sortId=-sortId;    for(i=0,len=rows.length;i<len;i++){
            tbody.appendChild(rows[i]);
        } 
    }function getAge(tr){
        return tr.cells[1].innerHTML;
        //return tr.cells[1].innerText||tr.cells[1].textContent;
    }
      

  3.   

    LZ是看黑马程序的视频么 我也在看,发现里面有的方法都是只针对IE6的