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

相关推荐
hashiqimiya2 小时前
html实现右上角有个图标,鼠标移动到该位置出现手型,点击会弹出登录窗口。
前端·html
古夕2 小时前
前端文件下载的三种方式:a标签、Blob、ArrayBuffer
前端·javascript·vue.js
纯真时光2 小时前
Vue3中pinia状态管理库的使用(Composition API 风格)
前端
万少3 小时前
可可图片编辑 HarmonyOS(5)滤镜效果
前端
2301_781668613 小时前
微服务面试篇
微服务·面试·架构
Yvonne爱编码3 小时前
后端编程开发路径:从入门到精通的系统性探索
java·前端·后端·python·sql·go
boonya4 小时前
Redisson原理与面试问题解析
面试·职场和发展·redission·分布式中间件框架
GIS之路4 小时前
GDAL 读取遥感影像数据
前端
在未来等你4 小时前
Elasticsearch面试精讲 Day 16:索引性能优化策略
大数据·分布式·elasticsearch·搜索引擎·面试