我的理解和疑惑,加了點(diǎn)注釋
function get_nextSibling(n){//n為假定的一個(gè)初始節(jié)點(diǎn),形參
? ? ? ? var x=n.nextSibling;//x為假定節(jié)點(diǎn)n的下一個(gè)節(jié)點(diǎn),形參
? ? ? ? while (x && x.nodeType!=1){//如果下一個(gè)節(jié)點(diǎn)(即x)不是元素節(jié)點(diǎn)
? ? ? ? ? ? x=x.nextSibling;//就把x變成當(dāng)前節(jié)點(diǎn)(作用相當(dāng)于n),繼續(xù)循環(huán)驗(yàn)證
? ? ? ? }
? ? ? ? return x;//是元素節(jié)點(diǎn),則返回形參x
? ? }
? ? var x=document.getElementsByTagName("li")[0];//x被賦值為實(shí)參,這里的賦值應(yīng)該與函數(shù)內(nèi)的x無關(guān)
? ? var y=get_nextSibling(x);//調(diào)用函數(shù)來找出y是x的下一個(gè)元素節(jié)點(diǎn)? ??
? ? if(y!=null){//驗(yàn)證y是否為最后一個(gè)元素節(jié)點(diǎn)
? ? 不知道對不對,但不懂的還是n為什么會被假定為節(jié)點(diǎn),是因?yàn)?nextSibling屬性而被當(dāng)作一個(gè)節(jié)點(diǎn)嗎
2016-07-09
n就只是一個(gè)形參,因?yàn)檎{(diào)用函數(shù)的時(shí)候get_nextSibling(x),已經(jīng)把x(全局)這個(gè)變量傳遞進(jìn)來了,就相當(dāng)于n就是這個(gè)x(全局),而這個(gè)x(全局)又是你找到的li元素節(jié)點(diǎn)。這個(gè)全局的x和你寫在函數(shù)get_nextSibling()的x(局部)變量沒有直接的關(guān)系。所以我建議你要是搞不清楚,你可以把x(局部)改成其它的變量名,比如x1,x2,z1等等其它的。不知道你是不是想問的是這個(gè)?哦,對了,函數(shù)內(nèi)的形參n我建議你直接把它看作全局的x,這樣應(yīng)該好理解一些!