前端面试__谈谈你知道的DOM常见的操作(JavaScript)

news/2024/12/22 23:06:45/

目录

1. 什么是DOM

2. 有哪些操作

2.1 创建节点

2.1.1 createElement

2.1.2 createTextNode

2.1.3 createDocumentFragment

2.1.4 createAttribute

2.2 获取节点

2.2.1 querySelector

2.2.2 querySelectorAll

2.3 更新节点

2.3.1 innerHTML

2.3.2 innerText、textContent

2.4 添加节点

2.4.1 innerHTML

2.4.2 appendChild

2.4.3 insertBefore

2.4.4 setAttribute

2.5 删除节点


1. 什么是DOM

文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口

它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容

2. 有哪些操作

  • 创建节点
  • 查询节点
  • 更新节点
  • 添加节点
  • 删除节点

2.1 创建节点

2.1.1 createElement

创建新元素,接受一个参数,即要创建元素的标签名

const divEl = document.createElement("div");

2.1.2 createTextNode

创建一个文本节点

const textEl = document.createTextNode("content");

2.1.3 createDocumentFragment

用来创建一个文档碎片,它表示一种轻量级的文档,主要是用来存储临时节点,然后把文档碎片的内容一次性添加到DOM中

const fragment = document.createDocumentFragment();

当请求把一个DocumentFragment 节点插入文档树时,插入的不是 DocumentFragment 自身,而是它的所有子孙节点

2.1.4 createAttribute

创建属性节点,可以是自定义属性

const dataAttribute = document.createAttribute('custom');
consle.log(dataAttribute);

2.2 获取节点

2.2.1 querySelector

传入任何有效的 css 选择器,即可选中单个 DOM 元素(首个):

document.querySelector('#element')
document.querySelector('div')
document.querySelector('.element')
document.querySelector('[name="ok"]')
document.querySelector('div + ul > li')

2.2.2 querySelectorAll

返回一个包含节点子树内所有与之相匹配的Element节点列表

const notLive = document.querySelectorAll("p");
​​​​​​​document.getElementById('id属性值');返回拥有指定id的对象的引用
document.getElementsByClassName('class属性值');返回拥有指定class的对象集合
document.getElementsByTagName('标签名');返回拥有指定标签名的对象集合
document.getElementsByName('name属性值'); 返回拥有指定名称的对象结合
document.documentElement;  获取页面中的HTML标签
document.body; 获取页面中的BODY标签
document.all[''];  获取页面中的所有元素节点的对象集合型

2.3 更新节点

2.3.1 innerHTML

不但可以修改一个DOM节点的文本内容,还可以直接通过HTML片段修改DOM节点内部的子树

// 获取<p id="p">...</p >
var p = document.getElementById('p');
// 设置HTML:
p.innerHTML = 'ABC <span style="color:red">RED</span> XYZ';
// <p>...</p >的内部结构已修改

2.3.2 innerText、textContent

与innerHTML的区别:无法识别任何HTML标签

innerText与textContent的区别:innerText不返回隐藏元素的文本,而textContent返回所有文本

2.3.3 style

DOM节点的style属性对应所有的CSS,可以直接获取或设置。遇到-需要转化为驼峰命名

p.style.fontSize = '20px'; 

2.4 添加节点

2.4.1 innerHTML

如果这个DOM节点是空的

  • 例如,<div></div>,那么,直接使用innerHTML = '<span>child</span>'就可以修改DOM节点的内容,相当于添加了新的DOM节点

如果不是空的

  • innerHTML会替换<div></div>标签中的内容

2.4.2 appendChild

把一个子节点添加到父节点的最后一个子节点

2.4.3 insertBefore

把子节点插入到指定的位置,使用方法如下:

parentElement.insertBefore(newElement, referenceElement)

子节点会插入到referenceElement之前

2.4.4 setAttribute

在指定元素中添加一个属性节点,如果元素中已有该属性改变属性值

const div = document.getElementById('id')
div.setAttribute('class', 'white');//第一个参数属性名,第二个参数属性值。

2.5 删除节点

删除一个节点,首先要获得该节点本身以及它的父节点,然后,调用父节点的removeChild把自己删掉

// 拿到待删除节点:
const self = document.getElementById('to-be-removed');
// 拿到父节点:
const parent = self.parentElement;
// 删除:
const removed = parent.removeChild(self);
removed === self; // true

删除后的节点虽然不在文档树中了,但其实它还在内存中,可以随时再次被添加到别的位置


http://www.ppmy.cn/news/227567.html

相关文章

联想yoga14s和小米笔记本Pro14哪个好

这两款轻薄本都有用到第11代的i5标压处理器&#xff0c;显示屏也是16:10的2k以上的分辨率&#xff0c;并且都支持90Hz以上的屏幕刷新率。选联想yoga14s还是小米笔记本Pro14这些点很重要 http://www.adiannao.cn/dy 第一、小米笔记本Pro14的屏幕刷新率更高。它最高支持120Hz的刷…

小米笔记本pro14和联想yoga14s 哪个好 更值得入手

价格下的小米Pro14&#xff0c;第一个优势的地方在于CNC加工的一体式机身&#xff0c;但带来的问题就是机身重量偏重&#xff0c;不利于移动办公。选小米笔记本pro14还是联想yoga14s 这些点很重要看过你就懂了http://www.adiannao.cn/dy 第二个优势的地方在于使用了MX450显卡&a…

笔记本哪个cpu好(intel 酷睿双核)

一篇好文章会给你我带来很多收获&#xff0c;仔细看下去对你一定很有帮助。 许多入门本友会对处理器是 P 和 T 开头含混不清&#xff0c;不甚了解&#xff0c;也怪英特尔的处理器型号实在是太过复杂。所以 产生了究竟是日产好还是本田好的疑惑。这需要具体型号来看的。让…

用好笔记本的触摸板

不知道大家的都是怎么用触摸板的&#xff0c;先说明一下&#xff0c;我的nb是ibm t42&#xff0c;之前用过t21&#xff0c;跟大多数ibm fans一样对小红帽情有独中&#xff0c;而且之前的ibm都是没有触摸板的&#xff0c;所以一般情况我都禁用触摸板&#xff0c;因为使用nb的时候…

oracle自定义函数 for in loop示例

1、新建type&#xff0c;就是返回结果集有什么&#xff0c;这里就写什么&#xff08;相当于表的字段&#xff09; CREATE OR REPLACE TYPE "TYPE_NQ_FORM_STATISTICS" as object (recordid varchar2(500),form_name varchar2(200),sortone varchar2(100),sorttwo …

i5 11600k比i5 12600k差多少 i512600k和i511600k对比

i5-11600K&#xff0c;6核心12线程&#xff0c;基准频率3.9GHz&#xff0c;最高加速4.9GHz 组装电脑选i5 11600k还是i5 10600k怎么搭配更合适 这些点很重要http://www.adiannao.cn/du i5-12600K采用混合架构设计&#xff0c;配备6颗Golden Cove性能大核以及4颗Gracemont能效小…

选哪个好 i5 12600k和R5 5600X参数对比

锐龙5 5600X&#xff0c;6核心12线程&#xff0c;3MB二级缓存&#xff0c;32MB三级缓存&#xff0c;基准频率3.7GHz&#xff0c;最高加速4.6GHz&#xff0c;热设计功耗为65W。组装电脑选R55600X还是i512600k怎么搭配更合适看完你就知道了 http://www.adiannao.cn/du i5-12600…

i5 12600K、i5 12600KF配什么主板、显卡

intel酷睿i5-12600K核心代号为 Alder Lake-S&#xff0c;不锁频设计&#xff0c;采用了全新的高性能混合架构&#xff0c;由6个性能核4个能效核构成&#xff0c;最终规格为10核心16线程&#xff0c;其中性能核&#xff08;P核&#xff09;采用的是Golden Cove架构&#xff0c;全…