原生JS實(shí)現(xiàn)列表子元素順序反轉(zhuǎn)的方法分析
本文實(shí)例講述了原生JS實(shí)現(xiàn)列表子元素順序反轉(zhuǎn)的方法。分享給大家供大家參考,具體如下:
編寫一個(gè)函數(shù)將一個(gè)列表里面的所有子元素順序反轉(zhuǎn),問題不難但是解決的方法卻有多種,而且性能大不一樣,下面就介紹幾種常用的方法:
1. 采用直接的DOM操作:
var ul = document.getElementById('target'); var list = ul.getElementByTagName('li'); var length = list.length; while(length--){ ul.appendchild(ul.childNodes[length]); }
這種方法在子元素?cái)?shù)量比較少的時(shí)候不會(huì)太影響頁(yè)面性能,但是當(dāng)子元素?cái)?shù)量較大的時(shí)候,頁(yè)面的性能會(huì)受到很大的影響,因?yàn)槊恳淮尾迦朐囟紝?duì)頁(yè)面進(jìn)行直接的DOM操作,因此不太建議這種方法。
2. 采用文檔碎片fragment方法
var ul = document.getElementById('target'); var list = ul.getElementByTagName('li'); var fragment = document.createDocumentFragment(); for(var i = list.length; i >= 0; i--){ fragment.appendChild(list[i]); } ul.appendChile(fragment);
采用文檔碎片的方法進(jìn)行操作,整個(gè)插入過(guò)程只對(duì)fragment進(jìn)行了一次的DOM操作,不管子元素的數(shù)量多少,相比第一種方法,頁(yè)面性能會(huì)得到很大的提升,實(shí)際應(yīng)用中可以采用這種方法。
關(guān)于fragment的官方說(shuō)明文檔https://developer.mozilla.org/en-US/docs/Web/API/Document/createDocumentFragment。
3. 采用數(shù)組的reverse方法
var ul = document.getElementById('target'); var chil_arr = Array.prototype.slice.call(ul.getElementByTagName('li'), 0);//因?yàn)間etElementByTagName獲取到的是偽數(shù)組,所以要進(jìn)行轉(zhuǎn)換 var str = ''; chil_arr.reverse(); for(var i = 0; i < chil_arr.length; i++){ str += chil_arr[i].outerHTML; } ul.innerHTML(str);
這種方法性能也還好。
4. 采用innerHTML方法
var ul = document.getElementById('target'); var list = ul.getElementByTageName('li'); var str = ""; for(var i = list.length; i >= 0; i--){ str += "<li>" + list[i].innerHTML + "</li>"; } ul.innerHTML(str);
這種方法性能是最好的,建議在實(shí)際應(yīng)用中采用這種方法,提高頁(yè)面的性能。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- js for循環(huán)倒序輸出數(shù)組元素的實(shí)例
- JavaScript實(shí)現(xiàn)數(shù)字?jǐn)?shù)組按照倒序排列的方法
- javascript 冒泡排序 正序和倒序?qū)崿F(xiàn)代碼
- javascript select列表內(nèi)容按字母倒序排序與按列表倒序排列
- JS基于遞歸算法實(shí)現(xiàn)1,2,3,4,5,6,7,8,9倒序放入數(shù)組中的方法
- js字符串倒序的實(shí)例代碼
- JavaScript實(shí)現(xiàn)反轉(zhuǎn)字符串的方法詳解
- 字符串反轉(zhuǎn)_JavaScript
- javascript實(shí)現(xiàn)字符串反轉(zhuǎn)的方法
- JS實(shí)現(xiàn)倒序輸出的幾種常用方法示例
相關(guān)文章
JavaScript寫的一個(gè)自定義彈出式對(duì)話框代碼
最近閑來(lái)無(wú)事,用js自己做了一個(gè)彈出式對(duì)話框,需要應(yīng)用彈出式對(duì)話框的朋友可以參考下。2010-01-01JS繪圖Flot如何實(shí)現(xiàn)可選顯示曲線圖功能
這篇文章主要介紹了JS繪圖Flot如何實(shí)現(xiàn)可選顯示曲線圖功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10IE8中動(dòng)態(tài)創(chuàng)建script標(biāo)簽onload無(wú)效的解決方法
這篇文章主要介紹了IE8中動(dòng)態(tài)創(chuàng)建script標(biāo)簽onload無(wú)效的解決方法,涉及針對(duì)javascript加載順序的調(diào)整,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12微信小程序云開發(fā)實(shí)現(xiàn)分頁(yè)刷新獲取數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了微信小程序云開發(fā)實(shí)現(xiàn)分頁(yè)刷新獲取數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08JsRender for index循環(huán)索引用法詳解
這篇文章主要介紹了JsRender for index循環(huán)索引用法,以實(shí)例形式詳細(xì)分析了JsRender中循環(huán)的用法,需要的朋友可以參考下2014-10-10JavaScript.The.Good.Parts閱讀筆記(二)作用域&閉包&減緩全局空間污染
塊級(jí)作用域: 大多數(shù)使用c語(yǔ)言語(yǔ)法的語(yǔ)言都有塊級(jí)作用域,而JavaScript沒有塊級(jí)作用域。2010-11-11