關(guān)于javascript進階篇9-11的個問題
<!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_previousSibling(g){
? ? ? ? var x=g.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
? ? var x=document.getElementById("e");
? ? document.write(x.nodeName);
? ? document.write(" = ");
? ? document.write(x.innerHTML);
? ??
? ? var y=get_previousSibling(x);
? ??
? ? if(y!=null){
? ? ? ? document.write("<br />nextsibling: ");
? ? ? ? document.write(y.nodeName);
? ? ? ? document.write(" = ");
? ? ? ? document.write(y.innerHTML);
? ? }else{
? ? ? document.write("<br>已經(jīng)是最后一個節(jié)點"); ? ? ?
? ? }
</script>
</body>
</html>
為何將while中的x=x.nextSibling中第二 個x改成其他字母,網(wǎng)頁崩潰無法運行;
<li>標(biāo)簽不是元素節(jié)點嗎?如果是,while循環(huán)條件中定義的是!=1,意思難道不是x不是元素節(jié)點時x=x.nextSibling?那么既然<li>是元素節(jié)點,為什么自后還是輸出了<li>的Name;
var x=document.getElementById("e")中的X是什么;?var y=get_previousSibling(x)中的X是什么,二者給你return X中的X,三者之間有什么聯(lián)系。
????以上三個問題望大神解答,困擾了一晚上,就差砸電腦了。萬分感謝?。。。。。。?!
2016-11-12
1、可以改,但是要將這個函數(shù)里的x全部都改,如下改成a
2、li是元素節(jié)點,當(dāng)x不是元素節(jié)點并且x存在,說明x是其他節(jié)點,例如文本節(jié)點,因此x.nextSibling再次判斷,直到是元素節(jié)點為止
3、第一個x是定義在全局作用域的變量;第二個x是函數(shù)調(diào)用時傳到函數(shù)內(nèi)部的參數(shù),這里相當(dāng)于將第一個定義的x傳進函數(shù)里,代替函數(shù)里的g;第三個x,函數(shù)內(nèi)部return x,是指函數(shù)局部作用域下的變量x,獲取變量優(yōu)先局部作用域,局部作用域沒有再去全局作用域查找
2016-11-20
while那塊這么理解,while循環(huán)執(zhí)行一塊代碼,直到條件不再被滿足,那些不是元素節(jié)點的滿足條件直接返回。
那些不滿足條件的也就是元素節(jié)點的,將執(zhí)行訪問兄弟節(jié)點的語句。——本人菜鳥,以上自己見解