当前位置: 首页 > article >正文

30、DOM常见的操作有哪些?

这个问题在前端面试里非常常见。如果你只回答“增删改查”会显得太浅如果能按模块、有条理地讲清楚面试官会觉得你基础扎实、实践经验也不错。一、DOM 常见操作可以分为哪些类一般可以从这几个方面回答查找节点创建 / 插入 / 删除 / 替换节点修改节点内容和属性操作样式和类名事件绑定与事件处理获取元素尺寸、位置、滚动信息DOM 遍历性能优化与最佳实践如果面试时间有限你可以先总述再挑重点展开。二、DOM 常见操作详解1查找节点这是最基础的一类操作。常见 APIdocument.getElementById(box) document.getElementsByClassName(item) document.getElementsByTagName(div) document.querySelector(.item) document.querySelectorAll(.item)面试点getElementById通过 id 获取单个元素querySelector返回第一个匹配的元素querySelectorAll返回NodeListgetElementsByClassName / getElementsByTagName返回HTMLCollection可补充亮点HTMLCollection往往是动态集合而querySelectorAll返回的NodeList通常是静态集合。这个点说出来面试官会觉得你不只是会用 API还知道区别。2创建、插入、删除、替换节点创建节点const div document.createElement(div) const text document.createTextNode(hello) div.appendChild(text)插入节点parent.appendChild(div) parent.insertBefore(newNode, referenceNode)现代写法还可以说parent.append(div) parent.prepend(div) element.before(newNode) element.after(newNode)删除节点parent.removeChild(child) child.remove()替换节点parent.replaceChild(newNode, oldNode)面试回答亮点可以提一句appendChild会把已有节点移动到新位置而不是复制如果想复制节点要用const clone node.cloneNode(true)其中true表示深拷贝连子节点一起复制false表示浅拷贝只复制当前节点3修改节点内容和属性修改内容element.innerHTML spanhello/span element.innerText hello element.textContent hello区别这个是很经典的面试点innerHTML解析 HTML可能有XSS 风险innerText受 CSS 影响获取的是“可见文本”textContent返回纯文本不解析 HTML性能通常更好属性操作element.getAttribute(data-id) element.setAttribute(title, 标题) element.removeAttribute(disabled)直接操作 DOM 属性input.value 123 img.src a.jpg checkbox.checked true数据属性 datasetelement.dataset.id 100 console.log(element.dataset.id)对应 HTMLdiv data-id100/div4操作样式和类名行内样式element.style.color red element.style.width 200px类名操作element.className box active element.classList.add(active) element.classList.remove(active) element.classList.toggle(active) element.classList.contains(active)获取计算后样式const style window.getComputedStyle(element) console.log(style.width)面试亮点建议补充优先通过classList切换样式而不是频繁直接修改style因为这样更利于维护也更符合“结构、样式、行为分离”的思想5事件绑定与事件处理绑定事件button.onclick function () {} button.addEventListener(click, handler)移除事件button.removeEventListener(click, handler)面试重点onclick和addEventListener区别你可以这样说onclick同一事件只能绑定一个处理函数后面的会覆盖前面的addEventListener可以绑定多个监听函数addEventListener更灵活还支持捕获、once、passive 等参数事件对象element.addEventListener(click, function (e) { console.log(e.target) console.log(e.currentTarget) e.preventDefault() e.stopPropagation() })事件流必须会捕获阶段目标阶段冒泡阶段事件委托这是非常加分的点。ul.addEventListener(click, function (e) { if (e.target.tagName LI) { console.log(点击了 li) } })为什么用事件委托减少事件绑定数量提升性能适合动态创建的元素6获取尺寸、位置、滚动信息这一块很多人会漏但面试很爱问。元素尺寸element.offsetWidth element.offsetHeight element.clientWidth element.clientHeight element.scrollWidth element.scrollHeight元素位置element.offsetTop element.offsetLeft element.getBoundingClientRect()滚动信息element.scrollTop element.scrollLeft window.scrollTo(0, 100) window.scrollBy(0, 50)区别简述clientWidth / clientHeight内容 padding不包含 border、滚动条offsetWidth / offsetHeight内容 padding borderscrollWidth / scrollHeight元素内容实际尺寸包括溢出部分如果你能把这几个区分清楚面试官通常会满意。7DOM 遍历获取父子兄弟节点element.parentNode element.parentElement element.childNodes element.children element.firstChild element.firstElementChild element.lastChild element.lastElementChild element.nextSibling element.nextElementSibling element.previousSibling element.previousElementSibling面试点childNodes包含文本节点、注释节点等children只包含元素节点这也是很典型的基础题。8表单相关 DOM 操作表单在实际开发中非常常见也可以顺便提一下。input.value input.checked select.value form.submit() form.reset()还可以监听input.addEventListener(input, handler) form.addEventListener(change, handler) form.addEventListener(submit, handler)三、面试中怎么回答更精彩关键不是“列 API”而是要体现分类能力对 API 区别的理解对实际开发场景的经验性能意识一个比较好的面试回答模板你可以直接背这个思路DOM 常见操作我一般分为几类节点查询、节点增删改、属性和内容修改、样式操作、事件处理、DOM 遍历以及尺寸位置获取。比如查询元素常用getElementById、querySelector、querySelectorAll创建和插入节点常用createElement、appendChild、insertBefore删除用removeChild或remove修改内容时会区分innerHTML、innerText和textContent其中innerHTML有解析 HTML 的能力但也要注意 XSS 风险样式上我更倾向于通过classList来增删类名而不是频繁操作行内样式事件方面常用addEventListener并结合事件冒泡机制做事件委托这样对动态元素和性能都更友好此外在一些滚动、拖拽、吸顶场景中也经常会用到offsetWidth、clientHeight、scrollTop、getBoundingClientRect这些 API。如果再往深一点说DOM 操作本身成本比较高所以我在实际开发里会尽量减少频繁重排重绘比如合并修改、缓存 DOM 查询结果、使用文档碎片DocumentFragment、通过事件委托减少监听器数量等。这个回答会比“DOM 就是增删改查”强很多。四、面试加分项顺带讲 DOM 性能优化如果你想回答得更高级可以补这部分。1减少频繁 DOM 查询const box document.getElementById(box) // 后续复用 box而不是每次都查2减少重排重绘不要在循环里频繁改样式for (let i 0; i 1000; i) { el.style.width i px }更好的方式批量修改 class集中修改脱离文档流后再操作3使用 DocumentFragment 批量插入const fragment document.createDocumentFragment() for (let i 0; i 5; i) { const li document.createElement(li) li.textContent item ${i} fragment.appendChild(li) } ul.appendChild(fragment)4事件委托优化事件绑定对列表、表格、菜单等场景非常实用。五、如果面试官继续追问可能会问什么1.innerHTML和textContent区别innerHTML会解析 HTMLtextContent纯文本更安全2.querySelectorAll返回什么返回NodeList3.children和childNodes区别children只包含元素节点childNodes包含所有节点4. 事件委托原理是什么利用事件冒泡把子元素事件交给父元素统一处理5.addEventListener第三个参数是什么以前常写布尔值表示捕获/冒泡现在也可以传对象如el.addEventListener(click, handler, { capture: false, once: true, passive: true })六、给你一个“精简版面试回答”如果面试中时间不多可以这样答DOM 常见操作主要包括查找节点、创建插入删除节点、修改内容和属性、操作样式、事件绑定、DOM 遍历以及获取元素尺寸和位置。常用查询方法有getElementById、querySelector、querySelectorAll节点操作有createElement、appendChild、insertBefore、remove内容修改会用innerHTML、innerText、textContent并注意它们的区别和安全性样式上常用classList和style事件上更推荐addEventListener并结合事件委托优化性能在实际开发中我也会注意减少频繁 DOM 操作避免重排重绘。七、总结一句话面试官真正想听的不是你背了多少 API而是你是否能系统分类你是否知道关键区别你是否有实际开发经验你是否有性能优化意识

相关文章:

30、DOM常见的操作有哪些?

这个问题在前端面试里非常常见。 如果你只回答“增删改查”,会显得太浅;如果能按模块、有条理地讲清楚,面试官会觉得你基础扎实、实践经验也不错。一、DOM 常见操作可以分为哪些类?一般可以从这几个方面回答:查找节点创…...

路径分析—PostgreSQL+GeoServer+Openlayers

一、道路数据处理 如果你已经有了道路数据,那就直接使用。 由于当前并没有较好的道路数据,这里我自己用 QGIS 造了些数据以供使用。 为了效果较好,在创建道路数据时是叠加了影像图的。并且要开启“捕捉工具”,这样在后续的拓扑分析中更好。 在完成道路数据的创建后,我直…...

L2-2、构建高效可复用的 AI 指令集 —— Prompt 模板化与结构化输出

1. 为什么需要构建可复用的AI指令集 第一次用ChatGPT时,我像个无头苍蝇一样反复输入相似的指令。早上要数据分析报告,下午要会议纪要,每次都得从头解释需求。直到有次同事发来一个txt文件,里面全是格式统一的提问模板——那一刻我…...

Chord - Ink Shadow 效果深度评测:多轮对话连贯性与上下文记忆能力展示

Chord - Ink & Shadow 效果深度评测:多轮对话连贯性与上下文记忆能力展示 最近试用了不少大模型,发现一个挺有意思的现象:很多模型单轮对话表现不错,但一旦聊得久了,就容易“失忆”或者“跑偏”。这让我对模型的长…...

十大排序算法详解:从原理到实战,苹果群控系统游戏运营如何实现自动执行任务。

排序算法概述 排序算法是将一组数据按照特定顺序(如升序或降序)重新排列的算法。根据时间复杂度、空间复杂度、稳定性等特性,排序算法可分为比较排序和非比较排序两大类。常见算法包括冒泡排序、快速排序、归并排序、堆排序、计数排序等。比较…...

爬虫自动化:数据采集与智能运维实战,人形机器人的发展历程、技术演进与未来图景。

爬虫与自动化技术概述 爬虫与自动化技术是现代数据采集与智能运维的核心工具。爬虫通过模拟浏览器行为或直接请求接口获取目标数据,自动化技术则用于数据处理、任务调度和系统监控。两者结合可构建高效的数据管道,覆盖从数据采集到智能运维的全流程。核心…...

PowerPaint-V1 Gradio在文化遗产保护中的应用:古画修复与数字化

PowerPaint-V1 Gradio在文化遗产保护中的应用:古画修复与数字化 1. 引言 一幅珍贵的古代山水画,因为年代久远出现了多处破损和褪色;一张历史照片,因为保存不当而出现了霉斑和裂纹。这些文化遗产的损坏,往往意味着一段…...

Ubuntu服务器生产环境部署Pixel Script Temple全记录

Ubuntu服务器生产环境部署Pixel Script Temple全记录 1. 准备工作与环境检查 在开始部署之前,我们需要确保服务器环境满足基本要求。首先确认你的Ubuntu服务器版本为20.04 LTS或22.04 LTS,这两个版本都提供长期支持,适合生产环境使用。 运…...

Cosmos-Reason1-7B效果展示:对‘为什么这个递归会栈溢出’提问,输出调用深度热力图分析

Cosmos-Reason1-7B效果展示:对为什么这个递归会栈溢出提问,输出调用深度热力图分析 提示:本文所有展示效果均基于真实测试,Cosmos-Reason1-7B模型能够深入分析递归函数的调用过程,并通过热力图直观展示栈溢出原因 1. 工…...

HarmonyOS6 ArkTS NavDestination

文章目录核心特性基础使用规范1. 组件层级关系2. 核心属性配置(1)标题配置:title()(2)返回按钮控制:hideBackButton()完整示例完整代码核心功能实现解析1. 主/子页面切换2. 滚动与标题栏联动(核…...

利用Python建立图书馆系统

题目描述设计一个简单的图书借阅管理系统。系统初始包含若干本图书,每本图书的信息包括:书号(字符串)书名(字符串)作者(字符串)库存数量(整数)另外&#xff0…...

#SpringBoot 日志配置完整文档(SLF4J + Logback + Druid适配)

一、前言 本文档详细说明 SpringBoot 项目中「SLF4J Logback」日志框架的完整配置,包含 Maven 依赖、application.yml 日志级别配置、logback-spring.xml 完整配置,重点覆盖:日志路径(相对/绝对)、日志格式、日志级别…...

Typora笔记完美发布CSDN:图片自动上传+排版优化保姆级教程

Typora 图像上传 完整操作说明 发现问题 当我们使用Typora这款强大的Markdown编辑器记录笔记时,经常会遇到一个让人困扰的问题:在将笔记上传到CSDN博客或者其他网站上后,图片无法正确显示。这不仅会大大降低我们的效率,还可能给…...

5步轻松搞定WE Learn高效学习:AI自动答题+智能刷课提升300%效率

5步轻松搞定WE Learn高效学习:AI自动答题智能刷课提升300%效率 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gi…...

告别枯燥单选按钮:用QCommandLinkButton打造Windows风格向导页(Qt5.15+)

告别枯燥单选按钮:用QCommandLinkButton打造Windows风格向导页(Qt5.15) 在传统的向导式界面设计中,单选按钮(QRadioButton)长期占据主导地位。但当我们追求更符合现代用户体验的设计时,这种上世…...

2025届毕业生推荐的降重复率工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 面对知网最近升级的AI生成内容识别算法,要想降低论文里的AI痕迹,得从…...

3分钟掌握百度网盘直连下载:告别限速的终极解决方案

3分钟掌握百度网盘直连下载:告别限速的终极解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘龟速下载而烦恼吗?百度网盘直连地址…...

【AGI】Harness Engineering 深度解析:AI Agent 时代的工程范式革命

Harness Engineering 深度解析:AI Agent 时代的工程范式革命 引言:当 AI Agent 开始"翻车" 一、什么是 Harness Engineering? 二、Harness Engineering 的三大核心领域 2.1 架构约束:为 AI 划定"奔跑边界" 2.2 反馈闭环:让 AI"自愈"而非&qu…...

2026届最火的五大AI辅助论文网站实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有着自动剖析研究领域热点能力的AI开题报告工具,是依托自然语言处理与知识图谱技…...

AudioSeal部署教程:HTTPS反向代理配置(Nginx)保护7860端口Web访问

AudioSeal部署教程:HTTPS反向代理配置(Nginx)保护7860端口Web访问 1. 项目概述 AudioSeal是Meta开源的专业语音水印系统,主要用于AI生成音频的检测和溯源。这个工具能够帮助用户: 在音频中嵌入不可见的水印信息从音…...

抖音风控参数‘bd-ticket-guard-client-data’深度解析:从X.509证书到请求签名的完整链路

抖音风控参数‘bd-ticket-guard-client-data’的技术内幕:从证书链到请求签名的安全架构 在移动互联网时代,平台风控系统如同数字世界的免疫系统,而bd-ticket-guard-client-data这类参数就是其识别"自我"与"非我"的关键标…...

PyTorch 笔记学习(15) : aot_autograd.py 解析

本文是 聚焦 torch/_functorch/aot_autograd.py 这一 1863 行的关键文件。它是 torch.compile 编译栈中承上启下的核心枢纽——向上承接 TorchDynamo 捕获的 FX 图,向下将前向/反向图交付给 Inductor 代码生成后端。理解这个文件,就掌握了 PyTorch 2.0 编…...

CTF隐写术入门:从图片LSB到音频频谱的5种实战技巧

CTF隐写术实战指南:从图片LSB到音频频谱的5种核心技巧 第一次参加CTF比赛时,我盯着那道图片隐写题整整两小时毫无头绪——直到偶然用Stegsolve点开Alpha通道,flag赫然出现在眼前。这种"啊哈时刻"正是隐写术的魅力所在。不同于密码…...

模数OPC社区在北京亦庄正式启航

打造AI创业“超级孵化器”,首批迎来20个创业团队入驻4月8日,在北京经济技术开发区(简称“北京经开区”,又称“北京亦庄”)举办的AI FUTURE北京亦庄AI未来大会上,一个全新的AI创业孵化空间——模数OPC&#…...

沈阳城市路灯工厂哪家强

大家好,我是你们的老朋友小明。今天咱们聊聊沈阳的路灯工厂,看看哪家更靠谱。说到这事儿,我可是做了不少功课,也走访了好几家工厂,希望我的分享能帮到正在为选路灯头疼的你。一、沈阳路灯市场现状1. 市场竞争激烈在沈阳…...

OpenClaw进阶:Phi-3-mini-128k-instruct模型微调与技能适配

OpenClaw进阶:Phi-3-mini-128k-instruct模型微调与技能适配 1. 为什么需要定制化模型 去年我在用OpenClaw处理医疗文献整理时遇到一个尴尬问题:当我让AI助手提取论文中的药物相互作用数据时,它总是把"ACE抑制剂"错误归类为"…...

Graphormer分子预测精度解析:OGB榜单指标解读与科研论文复现指南

Graphormer分子预测精度解析:OGB榜单指标解读与科研论文复现指南 1. 引言:Graphormer模型概述 Graphormer是一种基于纯Transformer架构的图神经网络,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。与传…...

docker容器最大压缩

压缩前先查找出无用的占用空间内容:find / -type f -size 10M -exec ls -lh {} \;上面大于10M的文件都搜出来了压缩容器为镜像:最大压缩(代价时间长):docker export 容器ID | gzip -9 > 名字.tar.gz一般压缩&#x…...

被“乖乖”洗脑了?《家事法庭》那个“中年油腻男”,竟是剧抛脸老熟人!

近日,聚焦家事审判的法院题材电视剧《家事法庭》正式登陆央视一套黄金档及多家网络平台。自3月25日开播以来,该剧凭借对民生百态的深刻刻画以及一众实力派演员的精湛演绎,迅速引爆收视与口碑热潮。剧中,演员郭家诺饰演的何秀光一角…...

Gemini + Claude写论文已经无人能敌了

写论文最耗精力的不是动笔,而是前期文献整理、框架搭建和后期反复修改。这套方法的核心是让不同AI各取所长,加速机械性工作,把时间留给真正需要思考的部分。工具分工:Gemini擅长信息检索和批量处理,适合前期文献梳理&a…...