DOM操作

一、DOM以及DOM是哪种数据结构

  文档对象模型(DOM)是 HTML 和 XML 文档的编程接口,提供了文档的结构化的表述

  文档对象模型DOM是树结构(DOM树)

二、DOM操作常用API

  1.DOM节点操作

    1)获取DOM节点:

复制代码
document.getElementById('id属性值');返回拥有指定id的对象的引用
document.getElementsByClassName('class属性值');返回拥有指定class的对象集合
document.getElementsByTagName('标签名');返回拥有指定标签名的对象集合
document.getElementsByName('name属性值'); 返回拥有指定名称的对象结合
document/element.querySelector('CSS选择器');  仅返回第一个匹配的元素
document/element.querySelectorAll('CSS选择器');   返回所有匹配的元素
document.documentElement;  获取页面中的HTML标签
document.body; 获取页面中的BODY标签
document.all[''];  获取页面中的所有元素节点的对象集合型
复制代码

    2)获取和修改DOM属性:

 property:通过property 修改和获取DOM的属性

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

 attribute:通过setAttribute 修改 和 getAttribute 获取 DOM属性

p1.setAttribute('style','font-size:50px')
p1.setAttribute('data-name','imook')
console.log(p1.getAttribute('data-name'))

  2.DOM结构操作

    1.创建节点

//创建一个元素节点
const div = document.createElement('div')
//创建一个文本节点
const content = document.createTextNode('content')
//创建文档碎片节点,是一种轻量级的文档,主要用来存储临时节点,然后一次性添加到DOM中
const fragment = document.createDocumentFragment()

  2.获取节点

复制代码
document.getElementById('id属性值') //返回指定id的对象引用
document.getElementsByClassName('class属性值') //返回指定class 对象集合
document.getElementsByTagName('标签名') // 返回拥有制定标签名的对象集合
document.getElementsByName('name 属性值') //返回拥有制定名称的对象集合
document/element.querySelector('css选择器') // 返回第一个匹配的元素
document/element.querySelectorAll('css选择器') //返回所有匹配的元素集合
element.childNodes() //返回所有子元素
element.parentNode() // 返回父元素 document.documentElement //获取页面中的HTML 标签 document.body //获取页面中 body标签 document.all // 获取页面中所有元素节点的对象集合
复制代码

  3. 添加节点 appendChild

const list = document.getElementById('list')
const li = document.createElement('li')
li.innerText = 'hello'
list.appendChild(li) // 将子元素添加到父节点的最后一个子节点中

  4. 插入节点 insertBefore

parentElement.insertBefore(newEl,referrenceEl) // 将子节点newEl 插入到referrenceEl 元素之前

  5. 移动节点 

const p1 = document.getElementById('p) //已存在的元素节点
const div2 = document.getElementById('div2')

div2.appendChild(p1) // 将元位置p1元素删除,并将其添加到div2元素中

  6.删除节点 parentEl.removeChild()

1
2
3
4
const img = document.getElementById('img')
const div = document.getElementById('div')
 
div.removeChild(img[0]) //将div的字元素img删除

三、attribute 和 property 的区别

  • property:只能获取或修改 DOM对象自身的属性
  • attribute:即可以获取和修改DOM对象自身的属性,也可以获取和修改自定义属性

四、一次插入多个节点,考虑性能

复制代码
const listnode = document.getElementById('list')

//创建一个代码判断,此时还没有插入到DOM树中
 const frag = document.createDocumentFragment()

for(let i = 0; i < 10; i++){
     const li = document.createElement('li')
     li.innerTHML = 'list item' + i
     frag.appendChild(li)        
}

//都完成之后,在插入到DOM树中
listnode.appendChild(frag)
复制代码

 

posted @   yangkangkang  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示