【第7周 02 DOM 3-13 节点封装函数】麻烦问下o=node为什么还要再写一遍?

来源:3-13 封装节点关系函数

easyschen

2021-12-03 19:26:46

问题描述:

老师麻烦看下问题: 第三个封装函数的问题


Q1:o = node 为什么要写第二遍?

A1:我的理解的是执行了前面一句o=o.previousSibling,将o变成了前面一项。

        所以找next的时候,要将o还原成刚开始的node。是这样吗?


Q2:箭头地方,函数3没有return语句,是否o在最后都会变成o.previous... ?

                       函数2有return,return执行的话,o就不会变成previous...吧


Q3:最后concat的部分,是否少个node,应该是prevs + node(o) +nexts?

A3:经过o = o.previous. o = o.next.   

        o已经变成了prevs[ ]的末尾 和next[ ]的开头一项。是这样吗?


老师麻烦看下我理解的对吗?


相关截图:

  • 第二个函数封装 previousElementSibling

https://img.mukewang.com/climg/61a9fb4c09ba88bc11640644.jpg

  • 第三个函数封装

https://img.mukewang.com/climg/61a9fb1a099d439011281074.jpg

写回答

1回答

好帮手慕久久

2021-12-04

同学你好,解答如下:

1、如下理解是对的:

https://img.mukewang.com/climg/61aac73b0975139e07360160.jpg

2、函数3中的o,会变成o.previousSibling,因为代码会执行赋值语句:

https://img.mukewang.com/climg/61aac80409829c6408260257.jpg

函数2有return,但是如果代码执行了if下面的语句,o也会变成o.previousSibling:

https://img.mukewang.com/climg/61aac88c09fc58b508470368.jpg

即代码只要执行了赋值语句(o=xxx),就会改变o的值。

3、返回结果(concat部分),不能包含node。因为函数是获取node的兄弟元素,兄弟是不包含自己的。

代码执行过程中,o会变成node的前一项、前两项.......、后一项,后两项......,通过o就能把node前面的兄弟元素、后面的兄弟元素都获取到。

祝学习愉快!

1

0 学习 · 15276 问题

查看课程