【面试题】DOM
创始人
2024-02-28 15:14:46
0

1. DOM的本质

DOM(Document Object Model),文档对象模型。DOM的本质是从HTML文件中解析出来的一棵树。DOM的数据结构是树形结构(DOM树)

2. DOM节点操作

2.1 获取DOM节点



获取DOM节点

一段文字1

一段文字2

一段文字3

一段文字4

在这里插入图片描述
在这里插入图片描述

2.2 property

property:修改对象属性,不会体现到html结构中。

// querySelectorAll
const pList = document.querySelectorAll('p')
console.log('pList', pList)const p = pList[0]
console.log(p.style.width)
console.log(p.className)p.style.width = '100px'
p.className = 'p1'console.log(p.style.width)
console.log(p.className)

在这里插入图片描述

2.3 attribute

attribute:修改html属性,会改变html结构。
property和attribute都会引起DOM重新渲染。

// attribute
const p1 = pList[1]p1.setAttribute('data-name', 'imooc')
console.log(p1.getAttribute('data-name'))p1.setAttribute('style', 'font-size:30px;')
console.log(p1.getAttribute('style'))

在这里插入图片描述
在这里插入图片描述

3. DOM结构操作

3.1 插入新的节点

// 新建节点
const newP = document.createElement('p')
newP.innerHTML = 'this is newP'
newP.className = 'newP'
// 插入节点
div1.appendChild(newP)

在这里插入图片描述

3.2 移动已有的节点

// 移动已有节点
const div2 = document.getElementById('div2')
div2.appendChild(p1)

在这里插入图片描述

3.3 获取子元素列表

const div1Child = div1.childNodes
console.log(div1Child)

在这里插入图片描述
在这里插入图片描述
通过判断nodeType,可以取出p标签,nodeType === 1 表示p标签

const div1ChildP = Array.prototype.slice.call(div1.childNodes).filter(a=>{if(a.nodeType === 1){return true}return false
})
console.log(div1ChildP)

在这里插入图片描述

3.4 获取父元素

console.log(p1.parentNode)

在这里插入图片描述

3.4 删除节点

div1.removeChild(div1ChildP[0])

在这里插入图片描述

4. 优化DOM操作性能

DOM操作会占用较多CPU,频繁操作会导致卡顿。
解决方案:

  • 对DOM查询做缓存
  • 频繁操作改为一次性操作

4.1 对DOM查询做缓存

在这里插入图片描述

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

新建10个li,频繁操作的情况:

    改为一次性操作:

    const list = document.getElementById('list')// 首先,创建一个文档片段,没有插入到DOM结构中
    const frag = document.createDocumentFragment()for(let i =0; i < 10; i++){const li = document.createElement('li')li.innerHTML = `List item ${i}`// 然后,再文档片段中插入DOM元素frag.appendChild(li)
    }// 最后,统一插入到DOM结构中
    list.appendChild(frag)
    

    在这里插入图片描述

    相关内容

    热门资讯

    喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
    发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
    网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
    为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
    家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
    华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
    四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
    怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
    苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
    客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...