parentNode这个属性找到的父节点是哪个节点?

来源:4-4 如何判断节点的包含关系contains

慕粉3988711

2016-10-30 03:40

<div id="a-node">

         <div id="b-node">

                 <div id="c-node">子节点内容部分</div>

          </div>

    </div>

将代码改成如上述代码所示  alert(fixContains(aNode,cNode));答案也是true,那么此处的c-node下的parentNode指代的是a-Node?还是b-Node?

写回答 关注

2回答

  • niupizhi203522025
    2016-10-30 11:50:47
    已采纳

    答案是:a-Node。

    解释如下:在自定义的fixContains函数中,赋值给变量的分别是aNode和cNode,与原来的区别是不再是cNode直接的父节点,而是父节点b-Node的父节点a-Node。在fixContains函数中通过wihle循环,直接将aNode和cNode,进行了是否父类关系的判断,结果alert的结果显示是true,说明在此处c-node的parentNode指代的是a-Node,而不是b-Node。虽然b-Node本身也是c-node的父节点。

    慕粉3988...

    非常感谢!

    2016-10-30 20:30:40

    共 1 条回复 >

  • 慕粉3988711
    2016-10-30 20:36:40

    刚刚又去试了下关键点在这:

    while ((b = b.parentNode)){

               if (b === a){

                   return true;

               }

           }

    <div id="a-node">

             <div id="b-node">

                     <div id="c-node">子节点内容部分</div>

              </div>

        </div>

    在while循环中(①b = b.parentNode)将b的parentNode赋给b在和a进行比较,若a!==b跳过if继续执行while循环此时b=b.parentNode相当于①中的b.parentNode.parentNode,这时符合条件,进入if并返回true,如果再不合适就会变成b.parentNode.parentNode.parentNode,直到找到对应值或者null,如果为null,则返回false。

DOM探索之基础详解篇

要知道前端大牛都是从精通DOM开始的,全面讲解DOM的基础知识

98372 学习 · 238 问题

查看课程

相似问题