掌握 DOM 的基础属性与方法:从操作元素到构建动态效果

在前端开发中,DOM(Document Object Model)是 JavaScript 与网页内容交互的核心,掌握它的基础属性与方法,是实现动态页面和组件交互的必备技能。本文将介绍几个常用的 DOM 属性和方法,包括其使用场景和注意事项。


一、className:为元素设置类名

className 用于为 HTML 元素设置一个或多个 CSS 类名,是操作元素样式的重要方式。

ini 复制代码
const div = document.getElementById('myDiv');
div.className = 'active highlight';

使用场景

  • 动态切换元素的 CSS 类,例如按钮的激活状态、模块的切换显示等。

  • 与 CSS 搭配使用,实现样式动态加载和切换。
    注意事项

  • className 替代了 class,可以直接修改类名。

  • 如果你想在原有类名基础上添加新的类名,建议使用 classList.add(),更安全、更灵活。


二、createElement:创建新的 DOM 元素

createElement 方法用于动态创建 HTML 元素,是构建动态内容的基础方法之一。

ini 复制代码
const newDiv = document.createElement('div');
newDiv.className = 'new-element';
document.body.appendChild(newDiv);

使用场景

  • 动态生成 HTML 内容,例如无限滚动、添加评论、动态表单输入等。

  • 在 DOM 操作中灵活构造元素结构。
    注意事项

  • 调用 createElement 时需要传入元素标签名,且是字符串形式。

  • 创建元素后需要通过 appendChildinsertBefore 等方法插入到 DOM 中。


三、appendChild:将元素添加到 DOM 结构中

appendChild 是将一个新的子节点添加到指定父节点下的方法,是构建页面结构时常用的 DOM 操作方式。

ini 复制代码
const parent = document.getElementById('container');
const child = document.createElement('p');
child.textContent = '这是一个新段落。';
parent.appendChild(child);

使用场景

  • 构建动态的内容结构,如评论、选项卡、模块的动态生成。

  • 在数据展示时,根据数据动态创建并挂载元素。
    注意事项

  • appendChild 会将元素插入到指定位置的最后面。

  • 插入的元素会自动成为 DOM 树的一部分,并与页面同步更新。


四、innerHTML:设置元素内部的 HTML 内容

innerHTML 是一个非常常用的属性,用于将 HTML 字符串插入到元素中,适合需要动态渲染内容的场景。

ini 复制代码
const div = document.getElementById('content');
div.innerHTML = '<h1>欢迎访问</h1><p>这是动态内容。</p>';

使用场景

  • 动态更新页面内容,如动态展示数据、标签替换等。

  • 生成 HTML 内容时简化代码,如通过字符串拼接动态生成代码。
    注意事项

  • innerHTML 把字符串直接插入 DOM,可能存在 XSS 安全风险,应优先使用 textContent

  • innerHTML 会清空元素原有内容,插入新的内容。


五、其他常用 DOM 属性和方法

除了上述几个基础方法,还有许多常用的 DOM 属性和方法,可以帮助你更高效地操作页面。

1. textContent:设置或获取元素的文本内容

不同于 innerHTMLtextContent 仅处理纯文本,不会解析 HTML。

ini 复制代码
<JS>
const div = document.getElementById('content');
div.textContent = '这是纯文本内容。';

使用场景

  • 安全地设置文本内容,避免 XSS 攻击。
  • 获取元素的纯文本内容,如用户输入、数据显示等。

2. querySelectorquerySelectorAll:DOM 查询工具

这两个方法用于查找 DOM 中的节点,相比 getElementByIdgetElementsByClassName 等方式更灵活高效。

ini 复制代码
const div = document.querySelector('#myDiv');
const listItems = document.querySelectorAll('li');

使用场景

  • 动态获取 DOM 元素时,尤其是我们知道选择器的场合。
  • 在数据绑定时,快速定位需要操作的节点。

3. removeChildremove:删除元素

removeChild 是将某个子节点从父节点中移除,remove 是直接从 DOM 中移除自己。

ini 复制代码
const parent = document.getElementById('container');
const child = parent.querySelector('p');
parent.removeChild(child);
// 或者
child.remove();

使用场景

  • 动态删除列表项、表格行、弹窗等元素。
  • 在数据交互时,根据数据变化进行动态更新。

4. cloneNode:复制元素节点

cloneNode 可以复制元素及其内容,常用于数据重复或组建复用。

ini 复制代码
<JS>
const button = document.getElementById('myButton');
const clonedButton = button.cloneNode(true); // true 表示克隆子节点
document.body.appendChild(clonedButton);

使用场景

  • 复制按钮、表单项、图片等可重复的内容。
  • 在构建动态组件时复用已有的 DOM 节点。

六、使用场景总结

属性/方法 使用场景 注意事项
className 动态样式切换,如状态控制 无法精细控制类名添加
createElement 动态生成 HTML 结构 需要配合 insert 操作
appendChild 在容器中添加子节点 将清空元素内容(可慎用)
innerHTML 复杂内容替换(如富文本、动态生成 HTML) 需要警惕 XSS 风险
textContent 安全地设置或获取纯文本内容 不会解析 HTML
querySelector 定位复杂结构中的元素 支持 CSS 选择器语法
removeChild 删除子元素 需要父节点的引用
remove 删除元素自身 更简洁高效
cloneNode 复制元素(包括子节点) 可用于组件复用

七、结语

DOM 是前端代码能够与浏览器交互的核心,掌握其基础属性和方法,是构建动态 UI 和交互功能的前提。虽然这些方法看起来简单,但在实际项目中却应用广泛,建议在开发过程中熟练使用,提高开发效率和代码质量。

相关推荐
夏幻灵1 小时前
HTML5里最常用的十大标签
前端·html·html5
Mr Xu_1 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝1 小时前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions1 小时前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发1 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
程序员猫哥_2 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl
我爱加班、、2 小时前
Websocket能携带token过去后端吗
前端·后端·websocket
AAA阿giao2 小时前
从零拆解一个 React + TypeScript 的 TodoList:模块化、数据流与工程实践
前端·react.js·ui·typescript·前端框架
杨超越luckly2 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强