老师让用previousSibling和nextSibling 获取到所有兄弟节点.请大神看看我写的哪里错了?

function allSibling(ele){

        var pre = ele.previousSibling,

        nex = ele.nextSibling,

        preAry = [],

        nexAry = [];

        while(pre){

            if(pre.nodeType===1){

                        preAry.unshift(pre);

            }else{

                    pre = pre.previousSibling;

            }

        }

        while(nex){

                        if(nex.nodeType===1){

                                        nexAry.push(nex);

                        }else{

                                    nex = nex.nextSibling;

                        }

         }

        return preAry.concat(nexAry);

}

//老师让用previousSibling和nextSibling 获取到所有兄弟节点.请大神看看我写的哪里错了?//

天天向上学
浏览 944回答 1
1回答

聪明的汤姆

两个while都造成了死循环不管nodeType是否等于1,都需要将当前的pre变成下一个previousSibling,不然会一直在当前pre进行循环,从而导致卡死,将两个while的代码改成如下即可// 遍历上一个兄弟节点 while (pre) {   if (pre.nodeType === 1) {     preAry.unshift(pre);   }   pre = pre.previousSibling   } // 遍历下一个兄弟节点 while (nex) {   if (nex.nodeType === 1) {     nexAry.unshift(nex);   }   nex = nex.nextSibling   }望采纳!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript