有幾處代碼不懂 求教~~
<script type="text/javascript">
? ? function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){ // 第一處 為什么x的節(jié)點類型不為1的元素節(jié)點就能作為n的兄弟節(jié)點?
? ? ? ? ? ? x=x.nextSibling;// 第二處 x不是已經(jīng)定義為n的下個節(jié)點了么,為什么又要重新賦值一次,重新賦值后的x不就是n的下下一個節(jié)點了么
? ? ? ? }
? ? ? ? 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){ ?//上面不是已經(jīng)在(x && x.nodeType!=1)約束了n的下一個節(jié)點要存在么 為什么又要重新約束一次?
? ? ? ? document.write("<br />nextsibling: ");
? ? ? ? document.write(y.nodeName);
? ? ? ? document.write(" = ");
? ? ? ? document.write(y.innerHTML);
? ? }else{
? ? ? document.write("<br>已經(jīng)是最后一個節(jié)點"); ? ? ?
? ? }
2015-09-18
第三處。IF可以省略。為了完整性。給上一個IF判斷。如果null即后面沒有元素。就輸出 已經(jīng)是最后一個節(jié)點!。
就當(dāng)作是為了輸出一個??已經(jīng)是最后一個節(jié)點!。 吧!
2015-09-18
第二處,并不是重復(fù)賦值。。而是不太好理解。function中的var僅作用與函數(shù)內(nèi)。所以此X非彼X。。
2015-09-18
?第一處 為什么x的節(jié)點類型不為1的元素節(jié)點就能作為n的兄弟節(jié)點?
? ? 如果不等于1,即是把空白區(qū)域算成一個節(jié)點了。我們要忽略這個節(jié)點。所以它必須等于1,也就是元素節(jié)點。這是我們需要的東西。那不等于1呢? 取它后面的一個節(jié)點不就行了。 ?那要是等于1,也就是沒有算上空白節(jié)點。直接獲取自己后面的下一個節(jié)點就行了。
2015-08-08
function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){?// 第一處 為什么x的節(jié)點類型不為1的元素節(jié)點就能作為n的兄弟節(jié)點?
//此處判斷為X節(jié)點類型不為1時的節(jié)點不能作為N的兄弟節(jié)點,進(jìn)而運行后面的X=X.nextSibling;去循環(huán)下一個節(jié)點能否作為N的兄弟節(jié)點,如果為1的話就不會運行while里的程序,直接去運行 return x 了;
? ? ? ? ? ? x=x.nextSibling;// 第二處 x不是已經(jīng)定義為n的下個節(jié)點了么,為什么又要重新賦值一次,重新賦值后的x不就是n的下下一個節(jié)點了么
????? ? //? ? 即上提及的循環(huán)下一個節(jié)點;
? ? ? ? }
? ? ? ? return x;
? ? }
//第三點沒相通,推測是判斷此節(jié)點不是最后一個節(jié)點,出于瀏覽器兼容問題做出的約束;
初學(xué),如有錯誤抱歉。