掌握 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 和交互功能的前提。虽然这些方法看起来简单,但在实际项目中却应用广泛,建议在开发过程中熟练使用,提高开发效率和代码质量。

相关推荐
Daybreak1 小时前
从 PDD、DDD、SDD 到 TDD:我是如何用一套 Agent 工程方法论推进 My-Notion 的
前端
西安邮电大学1 小时前
贪心算法详细讲解
java·后端·其他·算法·面试
HjhIron2 小时前
从零实现一个待办事项应用:前端必学的Ajax与Node.js实战
前端·后端
yingyima2 小时前
JavaScript 正则表达式:从零开始的实战对比
前端
Sammyyyyy2 小时前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
前端·javascript·人工智能·ai·typescript·servbay
范什么特西2 小时前
配置文件xml和properties
xml·前端
jnene2 小时前
html 时间、价格筛选样式处理
前端·css·html
slongzhang_3 小时前
jquery 修复怪异模式html未声明“<!DOCTYPE html>”
前端·html·jquery
黄昏回响3 小时前
信息系统基础知识(八):典型信息系统架构模型详解
程序人生·面试·系统架构·改行学it
云水一下4 小时前
Vue.js从零到精通系列(三):组件化基础——Props、Emits、插槽与生命周期
前端·javascript·vue.js