老师 有两个小问题

老师 有两个小问题

  //第二个函数:寻找一个可以返回元素前一个元素兄弟节点 类似previousElementSibling的功能

        //问题1:不要!=null不是更简洁吗 2 我不把node写成o不是更美观吗

        var two=document.getElementById('two');

        var one=document.getElementById('one');

        var a=document.getElementById('para');

        function getPES(node){

           

            while(node.previousSibling){

                node=node.previousSibling;

                if(node.nodeType==1) return node;

               

            }

        }

谢谢老师

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,同学的写法可以进一步优化一下,当没有获取到合适的元素时,建议返回null(代表没有获取到目标元素):

https://img1.sycdn.imooc.com//climg/62cd2db1098821c605170181.jpg

问题解答如下:

while循环中的条件,可以写成同学这样。视频中while的条件相对更清晰一点,能看到具体条件是什么。o = o.previousSibling这句代码,在这里的确没必要写,可以去掉。代码的书写方式并不唯一,同学在讲师代码的基础上进一步优化,这一点很棒!

祝学习愉快!

  • 慕仙0240544 提问者 #1

    //函数三 这个函数返回该元素的所有兄弟结点

            function pre(node){

                var b=[];

                while(node.previousSibling)

                {

                    node=node.previousSibling;

                    if(node.nodeType==1)

                        b.unshift(node);

                }

                return(b);

            }

            function next(node){

                var b=[];

                while(node.nextSibling)

                {

                    node=node.nextSibling;

                    if(node.nodeType==1)

                        b.push(node);

                }

                return(b);

            }

            console.log(pre(para).concat(next(para)));

    老师 这是我写的函数3 有什么可以改进的吗 当时不知道怎么在不设o的情况下返回那个节点

    2022-07-12 16:26:31
  • 好帮手慕久久 回复 提问者 慕仙0240544 #2

    严格来讲,这不算是一个函数,而是两个函数。可以改进一下,把两个函数封装到一起,比如:

     // 定义一个整体函数
            function getAll(node) {
                // 定义方法,获取前面节点
                function pre(node) {
                    var b = [];
                    while (node.previousSibling) {
                        node = node.previousSibling;
                        if (node.nodeType == 1)
                            b.unshift(node);
                    }
                    return (b);
                }
                // 定义方法,获取后面节点
                function next(node) {
                    var b = [];
                    while (node.nextSibling) {
                        node = node.nextSibling;
                        if (node.nodeType == 1)
                            b.push(node);
                    }
                    return (b);
                }
                // 得到最终结果
                var result = pre(para).concat(next(para))
                // 返回结果
                return result;
            }
            console.log(getAll(para));


    2022-07-12 16:59:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师