今天完成的事情:
- 昨天写的页面在点击了前序排序之后页面会崩溃掉, 排查了showNode函数和别的函数的问题, 最后发现问题出现在129行里面
 
function preOrder(root) {
        if (root) {
            showNode(root);
            for (var i=0;i<root.children.length;i++) { //这个地方没有写var一开始, 导致了每次循环都会使用同样的i。导致了最后错误的发生
                preOrder(root.children[i])
            }
//            preOrder(root.children[0]);
//            preOrder(root.children[1]);
        } else {
            throw "The" + root + "element didn't find."
        }
    }
任务八参考链接:
http://smallstarz.com/baidutask-2017/binbinxueyuan/task8/task_1_8_1.html
明天计划的事情:
- 重看一下javascript高级程序设计和相关资料,争取解决一下闭包的难点。
 - 完善一下task8的搜索功能
 
遇到的问题:
- 
后序排序的第一个元素没有从最外层的元素开始, 而是从倒数第二层的最左边的元素开始了, 此时的结构大概为
图片1.png
 
此时起点没有从level4开始却从level3开始让我有点困惑。
我看了一下参考链接,里面也是和我的一样,优先跑level3的而不是level4的,难道说这个就是后序排序的运行模式吗,还是我们写的都不对呢。
- innerHTML里面包括了子元素div里面的内容, 不想要他,怎么办呢
 - 又遇到闭包问题了... 还要回去再看一遍书,还没有理清楚
 
收获:
如何单独获得一个元素的文本而不包含其下面的其他元素
参考地址: http://www.cnblogs.com/wbkt2t/archive/2009/12/06/1618222.html
    //兼容浏览器获取节点文本的方法
    function text(e)
    {
        var t="";
        
        //如果传入的是元素,则继续遍历其子元素
        //否则假定它是一个数组
        e=e.childNodes||e;
        
        //遍历所有子节点
        for(var j=0;j<e.length;j++){
            //如果不是元素,追加其文本值
            //否则,递归遍历所有元素的子节点
            t+=e[j].nodeType!=1?
                e[j].nodeValue:text(e[j].childNodes);
        }
        //返回区配的文本
        return t;
    }
          






网友评论