前一个兄弟节点封装

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

慕姐2095756

2021-02-15 15:31:23

<div id="box">

        <p>段落A</p>

        <!-- 注释 -->   

        <p id="para">段落B</p>

        <span></span>

        <p>段落C</p>

    </div>


--------------------------------------------------


​var para=document.getElementById('para');

        function getElementPrevSibling(node){

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

                return node.previousSibling;

            }else{

                getElementPrevSibling(node.previousSibling);

            }

        }

        console.log(getElementPrevSibling(para));


为什么得到的是undefined

写回答

1回答

樱桃小胖子

2021-02-18

同学你好,这是由于previousSibling虽然表示获取元素的上一个兄弟节点,但是其包含元素节点、文本节点、注释节点等,previousSibling会把html结构中的各种空格、换行符、注释都当做同胞元素处理,这就会导致错误。同学给出的代码中<p id="para">段落B</p>的前一个节点是注释节点,因此会打印出undefined。可以结合previousElementSibling进行改造,具体参考如下:

http://img.mukewang.com/climg/602ddecc09c91e2906500354.jpg

祝学习愉快!

0

0 学习 · 15276 问题

查看课程