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

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

輸出第一個元素的前一個元素,沒有提示?

<script type="text/javascript">

? ?

? ? function get_previousSibling(n){

? ? ? ? var y=n.previousSibling;

? ? ? ? document.write(y.nodeType);

? ? ? ? while (y && y.nodeType!=1){

? ? ? ? ? ? y=y.previousSibling;

? ? ? ? ? ? document.write(y.nodeType);

? ? ? ? }

? ? ? ? return y;

? ? }

? ? var x=document.getElementsByTagName("li")[0];

? ? //document.write(x.nodeName);

? ? //document.write(" = ");

? ? //document.write(x.innerHTML);

? ??

? ? var y=get_previousSibling(x);

? ??

? ? if(y!=null){

? ? ? ? document.write("<br />nextsibling: ");

? ? ? ? document.write(y.nodeName);

? ? ? ? document.write(" = ");

? ? ? ? document.write(y.innerHTML);

? ? }else{

? ? ? document.write("<br>已經是第一個節點");? ? ??

? ? }


</script>

為啥沒執行“這是第一個元素”的輸出?

正在回答

3 回答

function get_previousSibling(n){

? ? ? ? var y=n.previousSibling;//這里獲取是前面的空格

? ? ? ? document.write(y.nodeType);//所以這個會打印一個3

? ? ? ? while (y && y.nodeType!=1){

? ? ? ? ? ? y=y.previousSibling;//在獲取空格前邊的節點,已經沒有了,會返回null

? ? ? ? ? ? document.write(y.nodeType);//所以這里便是null,已經不是節點了? 所以不存在節點類型的,

? ? ? ? }

? ? ? ? return y;//等于y是null? 所以下邊結果是已經是第一個節點了

? ? }


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

console.log(y);??沒看懂呢

但是我發現:我加的這?? document.write(y.nodeType);??一行打印y類型的語句,沒有運行;另外把這句注釋里就正常了哎,什么情況呢?

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

報錯了?

while?(y?&&?y.nodeType!=1){????????????
????y=y.previousSibling;????????????
????console.log(y);??//?加上這行看看這個y是什么
????document.write(y.nodeType);????????
}

如果你的li前面已經沒有元素了,應該會報錯才對。第一個li的previousSibling是#text,#text的previousSibling是null,null.nodeType自然就報錯了。

知道問題原因了,解決辦法就自己想想吧~

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

舉報

0/150
提交
取消

輸出第一個元素的前一個元素,沒有提示?

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

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

幫助反饋 APP下載

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

公眾號

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