老师讲的获取前一个兄弟元素的封装函数里面为什么要声明var o=node 而不直接用形参,另外最后为什么要写o=

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

weixin_慕村1291783

2020-10-30 11:58:54

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

​另外最后为什么要写o=o.previousSibling; 上面有return不是直接就不执行下面代码了吗

写回答

1回答

好帮手慕慕子

2020-10-30

同学你好,对于你的问题解答如下:

  1. getElementPrevSibling方法中,直接使用形参node也是可以的,老师讲解的是另一种实现思路,为了讲解下一个方法做铺垫的,同学自己练习的时候,可以直接使用形参node实现效果。

  2. 以老师的代码为例讲解,因为并不能确保第一次查找到的就是前一个兄弟元素就是元素节点,所以如果当查找到的前一个兄弟元素不是元素节点,需要将查找到的元素赋值给o,然后才可以根据已经查找到的元素继续向前查找,直到找到前一个元素节点才return返回结果。

    可以使用console.log语句输出测试下结果,如下:

    http://img.mukewang.com/climg/5f9bbf7409ec2fbb07520531.jpg

    打印结果如下:前几次查找的前一个兄弟元素都不属于元素节点,知道找到了id为fpara的元素才属于元素节点,它的nodeType属性值等于1,满足进入if语句,直接返回找到的上一个兄弟元素节点,才不再往后执行了。

    http://img.mukewang.com/climg/5f9bbfc009797d6e10230405.jpg

祝学习愉快~


0

0 学习 · 15276 问题

查看课程