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

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

有幾處代碼不懂 求教~~

<script type="text/javascript">

? ? function get_nextSibling(n){

? ? ? ? var x=n.nextSibling;

? ? ? ? while (x && x.nodeType!=1){ // 第一處 為什么x的節點類型不為1的元素節點就能作為n的兄弟節點?

? ? ? ? ? ? x=x.nextSibling;// 第二處 x不是已經定義為n的下個節點了么,為什么又要重新賦值一次,重新賦值后的x不就是n的下下一個節點了么

? ? ? ? }

? ? ? ? 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){ ?//上面不是已經在(x && x.nodeType!=1)約束了n的下一個節點要存在么 為什么又要重新約束一次?

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

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

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

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

? ? }else{

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

? ? }


正在回答

4 回答

第三處。IF可以省略。為了完整性。給上一個IF判斷。如果null即后面沒有元素。就輸出 已經是最后一個節點!。

就當作是為了輸出一個??已經是最后一個節點!。 吧!

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

第二處,并不是重復賦值。。而是不太好理解。function中的var僅作用與函數內。所以此X非彼X。。

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

?第一處 為什么x的節點類型不為1的元素節點就能作為n的兄弟節點?

? ? 如果不等于1,即是把空白區域算成一個節點了。我們要忽略這個節點。所以它必須等于1,也就是元素節點。這是我們需要的東西。那不等于1呢? 取它后面的一個節點不就行了。 ?那要是等于1,也就是沒有算上空白節點。直接獲取自己后面的下一個節點就行了。

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

function get_nextSibling(n){

? ? ? ? var x=n.nextSibling;

? ? ? ? while (x && x.nodeType!=1){?// 第一處 為什么x的節點類型不為1的元素節點就能作為n的兄弟節點?

//此處判斷為X節點類型不為1時的節點不能作為N的兄弟節點,進而運行后面的X=X.nextSibling;去循環下一個節點能否作為N的兄弟節點,如果為1的話就不會運行while里的程序,直接去運行 return x 了;

? ? ? ? ? ? x=x.nextSibling;// 第二處 x不是已經定義為n的下個節點了么,為什么又要重新賦值一次,重新賦值后的x不就是n的下下一個節點了么

????? ? //? ? 即上提及的循環下一個節點;

? ? ? ? }

? ? ? ? return x;

? ? }

//第三點沒相通,推測是判斷此節點不是最后一個節點,出于瀏覽器兼容問題做出的約束;

初學,如有錯誤抱歉。


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

叛逆春 提問者

你這是完全忽略我問的問題 自己解釋啊 親...
2015-08-10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

有幾處代碼不懂 求教~~

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

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

幫助反饋 APP下載

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

公眾號

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