为了账号安全,请及时绑定邮箱和手机立即绑定

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

<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 回答

答案是: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的父节点。

1 回复 有任何疑惑可以回复我~
#1

慕粉3988711 提问者

非常感谢!
2016-10-30 回复 有任何疑惑可以回复我~

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

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。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信