黑马程序员技术交流社区

标题: javascript中cloneNode方法疑惑 [打印本页]

作者: breeze    时间: 2013-5-17 20:36
标题: javascript中cloneNode方法疑惑
本帖最后由 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;
            }
作者: breeze    时间: 2013-5-19 21:45
还请大神们多多关注我的问题呀
作者: breeze    时间: 2013-5-23 23:56
版主能不能将我的问题提升一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2