溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

原生JS實(shí)現(xiàn)列表子元素順序反轉(zhuǎn)的方法分析

發(fā)布時(shí)間:2020-10-08 02:55:59 來(lái)源:腳本之家 閱讀:192 作者:尋夢(mèng)丶2015 欄目:web開發(fā)

本文實(shí)例講述了原生JS實(shí)現(xiàn)列表子元素順序反轉(zhuǎn)的方法。分享給大家供大家參考,具體如下:

編寫一個(gè)函數(shù)將一個(gè)列表里面的所有子元素順序反轉(zhuǎn),問(wè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ì)有所幫助。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI