A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© breeze 中级黑马   /  2013-5-17 20:36  /  1320 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 breeze 于 2013-5-30 16:58 编辑

我写了一个邮件列表, 想按照日期排序, 但是在排序方法内部使用cloneNode方法交换两个日期, 程序会将邮件列表中偶数的行删除, 但是单独封装一个swap方法, 就不会出现这种错误, 请高手看看下面的代码, 指点一下
             //按照日期排序
        function sort(){
                var tbody = document.getElementsByTagName("tbody")[0];
                var rowArr = tbody.rows;
                for (var x = 0; x < rowArr.length - 1; x++) {
                    for (var y = 0; y < rowArr.length - 1 - x; y++) {
                        if (compare(rowArr[y], rowArr[y + 1])) {
                            //          rowArr[y].swapNode(rowArr[y + 1]);                //火狐不支持
                            //下面三行代码排序后列表行数会减少, 但是单独抽取一个方法就会正确
                               var clone = rowArr[y].cloneNode(true);
                               tbody.replaceChild(clone, rowArr[y + 1]);
                               tbody.replaceChild(rowArr[y + 1], rowArr[y]);
                            //swap(rowArr[y], rowArr[y + 1]);
                        }
                    }
                }
               
                formatColor();
            }
            
            //交换节点的方法
       function swap(node1, node2){
                var clone = node1.cloneNode(true);
                node2.parentNode.replaceChild(clone, node2);
                node1.parentNode.replaceChild(node2, node1);
            }
            //比较日期大小的方法
            function compare(tr1, tr2){
                var arr1 = tr1.cells[2].innerHTML.split("-");
                var arr2 = tr2.cells[2].innerHTML.split("-");
                var date1 = new Date(arr1[0], arr1[1], arr1[2]);
                var date2 = new Date(arr2[0], arr2[1], arr2[2]);
                alert(date1 + "   " + date2);
                return date1 > date2;
            }

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

2 个回复

倒序浏览
还请大神们多多关注我的问题呀
回复 使用道具 举报
版主能不能将我的问题提升一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马