2 回答

TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超0個(gè)贊
<body?style="text-align:center"> <ul> ????<li>1</li> ????<li>2</li> ????<li>3</li> ????<li>4</li> </ul> <br?/> <input?type="button"?value="倒序排子元素"?onclick="de()"?/> </body> <script?type="text/javascript"> function?de(){ ??var?ul=document.getElementsByTagName("Ul")[0];?? ??if(ul.hasChildNodes())??//檢測(cè)元素是否有子節(jié)點(diǎn) ????{ ????var?len=ul.childNodes.length;??//獲得子節(jié)點(diǎn)數(shù)量 ????var?arr=[];???//聲明數(shù)組 ????for(var?i=0;i<len;i++)???//循環(huán) ????{ ??????arr[i]=ul.childNodes[0];???//將子節(jié)點(diǎn)依次添加到數(shù)組中 ??????ul.removeChild(ul.childNodes[0]);?//將子節(jié)點(diǎn)依次刪除 ????} ????for(var?i=len-1;i>=0;i--)??//倒敘的關(guān)鍵 ????{ ??????ul.appendChild(arr[i]);??//添加 ??????//?樓主應(yīng)該自己分析,不懂的"方法"去看,學(xué) ????} ???} } </script> </body>

TA貢獻(xiàn)158條經(jīng)驗(yàn) 獲得超188個(gè)贊
script標(biāo)簽放到</body>上面去,不要放它在下面
ui.appendChild(arr[i]); l寫錯(cuò)成了i, 改成? ul.appendChild(arr[i]);
再說下這段代碼
在button行內(nèi)添加事件 調(diào)用下面封裝的de函數(shù)
函數(shù)里先獲取了 ul 元素,然后判斷 如果 ul 有子元素, 執(zhí)行排序的代碼
聲明 len = ul子元素的個(gè)數(shù),循環(huán)用。聲明 arr = []; 用來緩存ul的子元素
根據(jù)len執(zhí)行for循環(huán)遍歷ul所有的子元素, 每次循環(huán) 把當(dāng)前的子元素節(jié)點(diǎn)緩存到數(shù)組arr中,然后從ul中移除當(dāng)前的子元素節(jié)點(diǎn)
第一次循環(huán)完畢后 ul 的子元素全部被移除,arr中為原ul中的子元素的集合
再開始第二個(gè)循環(huán),
for (var i = len-1; i >= 0; i--) { ul.appendChild(arr[i]) };
這表示從數(shù)組arr最后一個(gè)元素開始遍歷該數(shù)組,即第一次append到ul中的元素是arr中最后一個(gè),也就是原來的ul中的最后一個(gè)元素,循環(huán)完也就實(shí)現(xiàn)了倒序。。。
添加回答
舉報(bào)