前一个兄弟节点封装

前一个兄弟节点封装

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

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

http://img1.sycdn.imooc.com//climg/602ddecc09c91e2906500354.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师