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

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

明明有上一個節點的,結果卻是“已經是第一個節點了”

<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
<title>nextSibling</title>
</head>
<body>
<ul?id="u1">???
????????????<li?id="a">javascript</li>???
????????????<li?id="b">jquery</li>???
????????????<li?id="c">html</li>???
????????</ul>???
????????<ul?id="u2">???
????????????<li?id="d">css3</li>???
????????????<li?id="e">php</li>???
????????????<li?id="f">java</li>???
????????</ul>???
<script?type="text/javascript">
????function?get_nextSibling(n){
????????var?x=n.nextSibling;
????????while?(x?&&?x.nodeType!=1){
????????????x=x.nextSibling;
????????}
????????return?x;
????}

????var?x=document.getElementsByTagName("li")[0];
????document.write(x.nodeName);
????document.write("?=?");
????document.write(x.innerHTML);
????
????var?y=get_nextSibling(x);
????
????if(y!=null){
????????document.write("<br?/>nextsibling:?");
????????document.write(y.nodeName);
????????document.write("?=?");
????????document.write(y.innerHTML);
????}else{
??????document.write("<br>已經是最后一個節點");??????
????}
????
????//?獲取上一個節點代碼開始
????function?get_previousSibling(n){
????????var?x=n.previousSibling;
????????while?(x?&&?x.nodeType?!=?1){
????????????x=x.previousSibling;
????????}
????????return?x;
????}
????var?li5?=?document.getElementsByTagName("li")[4];
????document.write("<br/><br/>"?+?li5.nodeName);
????document.write("?=?");
????document.write(li5.innerHTML);
????var?node?=?get_previousSibling(a);
????if(node?!=?null){
????????document.write("<br/>previousSibling:");
????????document.write(node.nodeName);
????????document.write("?=?");
????????document.write(node.innerHTML);
????}else{
????????document.write("<br/>已經是第一個節點了");
????}
????

</script>
</body>
</html>

為什么明明上一個節點是css的,結果卻是“已經是第一個節點了”?問題出在哪里?請大神指教

正在回答

2 回答

為什么第7行要返回 li5啊

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

WingMeng 提問者

如果沒有第7行的return li5,那么低13行的node就取不到值(undefind)
2014-12-25 回復 有任何疑惑可以回復我~

暈,原來是自己傳參傳錯了,正確的代碼應該是這樣的:

//?獲取上一個節點代碼開始
????function?get_previousSibling(n){
????????var?li5=n.previousSibling;
????????while?(li5?&&?li5.nodeType?!=?1){
????????????li5=li5.previousSibling;
????????}
????????return?li5;
????}
????var?li5?=?document.getElementsByTagName("li")[4];
????document.write("<br/><br/>"?+?li5.nodeName);
????document.write("?=?");
????document.write(li5.innerHTML);
????var?node?=?get_previousSibling(li5);
????if(node?!=?null){
????????document.write("<br/>previousSibling:");
????????document.write(node.nodeName);
????????document.write("?=?");
????????document.write(node.innerHTML);
????}else{
????????document.write("<br/>已經是第一個節點了");
????}


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

舉報

0/150
提交
取消

明明有上一個節點的,結果卻是“已經是第一個節點了”

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

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

幫助反饋 APP下載

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

公眾號

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