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

為了賬號安全,請及時綁定郵箱和手機立即綁定

查找第1個標簽(元素)的previousSibling屬性為何固定為如下代碼?

在JS進階教程中有關prevoiusSibling和nextSibling的章節有一段程序如下:

<script?type="text/javascript">
????//?查找頁面中的第1個<li>標簽
????var?firstLi?=?document.getElementsByTagName("li")[0];
????
????//?編寫函數查找上一個sibling標簽
????function?get_previousSibling(node)?{
????????var?pn?=?node.previousSibling;
????????//?因為循環條件的原因,導致出現了問題
????????//?查找的循環條件是“如果上一個sibling類型不是“1”?并且?取值不是null”
????????//?如果將循環條件調整為“while?(pn?&&?1!=pn.type?)”則正常
????????while?(1!=pn.type?&&?pn)?{
????????????pn?=?pn.previousSibling;
????????}
????????return?pn;
????}
????
????var?pSibling?=?get_previousSibling(firstLi);
????if?(pSibling)?{
????????document.write("前一個sibling:"?+?pSibling.innerHTML);
????}?else?{
????????document.write("已經是第一個元素了");
????}
</script>

由運行結果來看,并沒有任何輸出內容。倒查JS代碼,發現問題出在了get_previous()函數中的while循環條件上:

while?(1!=pn.type?&&?pn)?{
}

如果調整為如下形式則能夠獲取輸出:

while?(pn?&&?1!=pn.type)?{
}

我自己分析,問題可能在于第一個<li>標簽之前并沒有sibling。pn為第一個<li>標簽的前一個sibling,也就是說pn=null。所以循環條件判斷時首先判斷pn.type會引發問題,而如果首先判斷pn!=null則無礙。

請問各位大俠,我的猜測是否有誤?請您不吝賜教!

正在回答

2 回答

沒錯,如果pn不存在,則其為undefined,就不存在type屬性,會報錯

0 回復 有任何疑惑可以回復我~

剛才打錯了,是null,不是undefined?

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

查找第1個標簽(元素)的previousSibling屬性為何固定為如下代碼?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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