美文网首页
Ife Javascript Task 08 -- 201705

Ife Javascript Task 08 -- 201705

作者: Brash | 来源:发表于2017-05-18 08:29 被阅读9次

    今天完成的事情:

    1. 昨天写的页面在点击了前序排序之后页面会崩溃掉, 排查了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

    明天计划的事情:

    1. 重看一下javascript高级程序设计和相关资料,争取解决一下闭包的难点。
    2. 完善一下task8的搜索功能

    遇到的问题:

    1. 后序排序的第一个元素没有从最外层的元素开始, 而是从倒数第二层的最左边的元素开始了, 此时的结构大概为


      图片1.png

    此时起点没有从level4开始却从level3开始让我有点困惑。
    我看了一下参考链接,里面也是和我的一样,优先跑level3的而不是level4的,难道说这个就是后序排序的运行模式吗,还是我们写的都不对呢。

    1. innerHTML里面包括了子元素div里面的内容, 不想要他,怎么办呢
    2. 又遇到闭包问题了... 还要回去再看一遍书,还没有理清楚

    收获:

    如何单独获得一个元素的文本而不包含其下面的其他元素
    参考地址: 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;
        }
    
    

    相关文章

      网友评论

          本文标题:Ife Javascript Task 08 -- 201705

          本文链接:https://www.haomeiwen.com/subject/xcqdxxtx.html