亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

老師讓用previousSibling和nextSibling 獲取到所有兄弟節點.請大神看看我寫的哪里錯了?

老師讓用previousSibling和nextSibling 獲取到所有兄弟節點.請大神看看我寫的哪里錯了?

天天向上學 2018-11-08 20:54:57
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 獲取到所有兄弟節點.請大神看看我寫的哪里錯了?//
查看完整描述

1 回答

?
聰明的湯姆

TA貢獻112條經驗 獲得超33個贊

兩個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??
}

https://img1.sycdn.imooc.com//5be4e7d80001769403880152.jpg

望采納!

查看完整回答
反對 回復 2018-11-09
  • 1 回答
  • 0 關注
  • 985 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號