JavaScript基础-DOM操作:查找、创建、修改

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 【6月更文挑战第12天】本文介绍了DOM基础,包括查找元素(getElementById、getElementsByClassName等)、创建新节点(createElement、createTextNode)和修改节点(innerText、innerHTML、setAttribute等)。强调了易错点,如ID唯一性、性能考量和安全问题,并提供了代码示例。熟练掌握DOM操作对前端开发至关重要,但应注意性能优化,适时使用框架或库。

DOM(Document Object Model)是Web开发中的核心概念,它将HTML文档表示为一个可编程的对象集合,使得JavaScript能够动态地查询、创建、修改页面内容。本文旨在深入浅出地介绍DOM操作的基础知识,包括查找元素、创建新节点以及修改现有节点的方法,同时揭示一些常见问题、易错点,并提供避免策略及实用代码示例。
image.png

查找元素

常见方法

  • getElementById: 通过ID精确查找一个元素。
  • getElementsByClassName: 根据类名查找多个元素。
  • getElementsByTagName: 通过标签名查找多个元素。
  • querySelector: 使用CSS选择器查找第一个匹配的元素。
  • querySelectorAll: 使用CSS选择器查找所有匹配的元素。

易错点与避免策略

  • ID唯一性:使用getElementById时,确保ID在整个文档中是唯一的,否则行为可能不可预测。
  • 性能考量getElementsByClassNamegetElementsByTagName返回的是实时的NodeList集合,频繁操作可能影响性能,考虑使用querySelectorAll获取静态集合。

创建新节点

方法介绍

  • document.createElement: 创建一个新的HTML元素。
  • document.createTextNode: 创建文本节点。

易错点与避免策略

  • 忘记插入:创建节点后,记得将其插入到DOM树中,否则新节点不会显示在页面上。
  • 直接赋值与appendChild混淆:对于已存在子节点的元素,直接使用element.innerHTML赋值会覆盖原有子节点,应根据需求选择合适方法。

修改现有节点

常见操作

  • innerText/innerHTML: 改变元素内的文本或HTML结构。
  • setAttribute/getAttribute/removeAttribute: 操作元素的属性。
  • classList: 添加、删除或切换元素的CSS类。

易错点与避免策略

  • innerText与innerHTML混用innerText仅用于文本内容,而innerHTML会解析HTML,使用时需明确意图。
  • 安全问题:使用innerHTML插入用户输入时,警惕XSS攻击,考虑使用textContent代替或进行适当的输入验证。
  • 样式操作:尽量使用CSS类进行样式管理,而非直接修改style属性,以提高代码可维护性。

代码示例

查找元素

const elementById = document.getElementById('myElement');
const elementsByClass = document.getElementsByClassName('exampleClass');
const firstMatch = document.querySelector('.special');
const allMatches = document.querySelectorAll('p');

创建新节点并插入

const newDiv = document.createElement('div');
const textNode = document.createTextNode('New Content');
newDiv.appendChild(textNode);
document.body.appendChild(newDiv);

修改现有节点

const targetElement = document.getElementById('target');
targetElement.innerText = 'Updated Text';
targetElement.setAttribute('data-status', 'active');
targetElement.classList.add('highlight');

总结

DOM操作是前端开发的基石,熟练掌握查找、创建、修改节点的技巧对于构建动态网页至关重要。通过避免上述提及的易错点,采用最佳实践,开发者可以更高效、安全地操控页面元素,提升用户体验。记住,虽然直接操作DOM可以实现丰富的交互效果,但也应注意性能优化,特别是在处理大量数据或频繁更新时,考虑使用现代框架或库来简化DOM操作,提高应用性能。

目录
相关文章
|
23天前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
9天前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
10天前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
1月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
42 4
|
2月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 节点列表
JavaScript HTML DOM 节点列表
19 5
|
2月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 集合(Collection)
JavaScript HTML DOM 集合(Collection)
28 4
|
2月前
|
JavaScript 前端开发 索引
你可能没有听说过 js中的 DOM操作还有这个: HTMLCollection 和 NodeList
该文章详细解释了JavaScript中HTMLCollection和NodeList这两种DOM集合类型的特性、使用方法及其区别,并通过实例代码展示了如何操作这两种集合来选取和遍历DOM元素。
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
22 5
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM 元素 (节点)
JavaScript HTML DOM 元素 (节点)
26 2
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM - 改变CSS
JavaScript HTML DOM - 改变CSS
26 4