关于这个的疑问 为什么要o= node 直接Node不行吗

关于这个的疑问 为什么要o= node 直接Node不行吗

<script>

      let para = document.getElementById("para");


      function getElementPrevious(node) {

        while (node.previousSibling != null) {

          if (node.previousSibling.nodeType == 1) {

            return node.previousSibling;

          }

          node = node.previousSibling;

        }

        return null;

      }


      console.log(getElementPrevious(para));

    </script>


正在回答 回答被采纳积分+1

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

1回答
好帮手慕久久 2020-10-08 17:36:12

同学你好,老师没有理解“直接Node”这句话指的是什么,同学有疑问的地方是“node = node.previousSibling;”这句代码吗?如果是的话,老师为你整体解释一下该段代码的含义,同学试着理解一下:

getElementPrevious这个方法是获取参数node的前一个兄弟元素节点(节点有很多类型,比如注释节点、元素节点,而我们要找的就是元素节点),因此要利用while,循环遍历node前面所有的节点,找到符合条件的;如果node前一个节点是符合条件的,那么就满足if的条件,直接将该节点返回即可,如果不符合条件,那么就要继续往前查找。举个简单的例子,初始参数node前面有A、B、C三个节点,先判断A,而A不满足条件,那么就要继续判断B,此时if语句下面的“node = node.previousSibling”相当于把node赋值为A,然后再进入while循环,在while循环中条件中“node.previousSibling”则是获取的B(A.previousSibling是B),然后再判断B,依次类推,如下:

http://img1.sycdn.imooc.com//climg/5f7edcd609893e3812560370.jpg

如果不是这里,建议同学详细描述一下,可以粘贴截图,指明哪里不懂,或者自己写一下代码,标注出来哪里有疑问,老师再给你解答。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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