【面试题】DOM
创始人
2024-02-28 21:13:57

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)
    

    在这里插入图片描述

    相关内容

    热门资讯

    埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
    北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
    苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
    应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
    脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
    长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
    demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
    猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
    世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
    埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
    苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
    北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
    应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...