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

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

我把ul中第一個li和第二個li之間的空白去掉了把&&nodeType!==1也去掉了為什么打印不出來

<!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">1</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=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+"<br ?/><br ?/>");

? ? }else{

? ? ? document.write("<br>已經是最后一個節點"+"<br /><br ?/>"); ? ? ?

? ? }

//以下是本題題解

? ? function get_previousSibling(n)

? ? {

? ? ? ? var z=n.previousSibling;

? ? ? ? while (z&&z.nodeType!=1)

? ? ? ? {

? ? ? ? ? ? z=z.previousSibling;

? ? ? ? }

? ? ? ? return z;

? ? }

? ?var z=document.getElementsByTagName("li")[4];

? ? ? ?document.write(z.nodeName+" = "+z.innerHTML);

? ?var d=get_previousSibling(z);

? ? if(d!=null)

? ? {

? ? document.write("<br ?/>previoussibling:"+d.nodeName+" = "+d.innerHTML);

? ? }

? ? else {

? ? ? ? document.write("<br />這是第一個節點,前面沒有節點了。");

? ? }

</script>

</body>

</html>


正在回答

1 回答

function?get_nextSibling(n){
????????var?x=n.nextSibling;
????????while?(x?){
????????????x=x.nextSibling;
????????}
????????return?x;
????}

截取了你的這一段代碼,問題就出在這 while 循環,這個循環的意思是,只要 x 不為 null,就一直循環下去,那么理所當然,只有當 x 為 null 時才跳出循環,這個時候,x 的值為 null,自然就打印不出來。

你把空白節點去掉了,想打印下一個,可以不用 while 循環,直接?nextSibling?;蛘弑A粼镜难h條件不變,就能打印出來了。

補充一下:空白節點的值并非 null,是有值的,是一個實際存在的節點。只有當獲取不到符合條件的節點時,才會返回 null 值。

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

哎_呦_喂___ 提問者

額,謝啦。。之前沒太看懂
2016-10-13 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

我把ul中第一個li和第二個li之間的空白去掉了把&&nodeType!==1也去掉了為什么打印不出來

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

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

幫助反饋 APP下載

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

公眾號

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