欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一次性插入多个节点,如何优化 DOM 操作的性能?

程序员文章站 2022-04-28 12:42:15
...

缓存DOM查询结果

//不缓存DOM查询结果
for(let i=0; i < document.getElementsByTagName('p').length; i++) {
//每次循环都会计算length,频繁进行DOM查询
}

//缓存DOM查询结果
const Plist = document.getElementsByTagName('p')
const length = pList.length
for(let i = 0; i<length; i++) {
//缓存length,只进行一次DOM查询
}

将频繁操作改为一次性操作

频繁操作

const list = document.getElementById('list')

for(let i =0; i <10; i++) {
    const li =document.createElement('li')
    li.innerHTML = `List item ${i}`
    list.appendChild(li)
}

一次性操作

const listNode = document.getElementById('list')

//创建一个文档片段,此时还没有插入到DOM树中
const frag = document.createDocumentFragment()

//执行插入
for(let x=0; x<10; x++) {
    const  li = document.createElement('li')
    li.innerHTML = 'List item'  + x
    //先插入文档片段中
    frag.appendChild(li)
}

//都完成之后,再插入到DOM树中
listNode.appendChild(fag)
相关标签: 温故知新堂