news 2026/5/8 9:34:14

JavaScript DOM操作实战:从入门到精通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaScript DOM操作实战:从入门到精通

JavaScript DOM 核心操作:从内容到节点的实战指南

一、内容操作
  1. 文本内容

    • textContent:获取或设置元素的纯文本内容
    const element = document.getElementById("demo"); console.log(element.textContent); // 获取内容 element.textContent = "新文本"; // 设置内容
    • innerText的区别:textContent获取所有文本(包括隐藏元素),innerText只渲染可见文本
  2. HTML内容

    • innerHTML:操作元素的HTML结构
    element.innerHTML = "<strong>加粗文本</strong>"; // 插入带标签的内容
    • 注意:直接插入HTML可能引发XSS攻击,需对用户输入做转义处理

二、属性操作
  1. 标准属性

    • 直接访问:element.idelement.className
    • 通用方法:
      element.setAttribute("data-id", "123"); // 设置属性 console.log(element.getAttribute("data-id")); // 获取属性 element.removeAttribute("data-id"); // 删除属性
  2. 自定义属性

    • 推荐使用data-*规范:
    <div>console.log(element.dataset.userId); // 通过 dataset 访问

三、样式操作
  1. 修改CSS类

    element.classList.add("active"); // 添加类 element.classList.remove("hidden"); // 移除类 element.classList.toggle("dark-mode"); // 切换类
  2. 直接修改样式

    element.style.color = "#ff0000"; // 行内样式 element.style.setProperty("--primary-color", "blue"); // 修改CSS变量

四、节点操作(核心)
  1. 节点创建

    const newDiv = document.createElement("div"); // 创建元素 const textNode = document.createTextNode("动态内容"); // 创建文本节点
  2. 节点插入

    parentElement.appendChild(newDiv); // 插入子节点末尾 parentElement.insertBefore(newDiv, referenceElement); // 在指定节点前插入
  3. 节点替换与删除

    parentElement.replaceChild(newDiv, oldChild); // 替换节点 parentElement.removeChild(oldChild); // 删除节点
  4. 节点遍历

    console.log(parentElement.firstChild); // 首个子节点 console.log(parentElement.lastChild); // 末尾子节点 console.log(node.nextSibling); // 下一个兄弟节点

五、事件处理
  1. 事件监听

    element.addEventListener("click", (event) => { console.log("点击坐标:", event.clientX, event.clientY); });
  2. 事件委托
    利用事件冒泡提高性能:

    document.getElementById("list").addEventListener("click", (e) => { if(e.target.tagName === "LI") { console.log("点击列表项:", e.target.textContent); } });

六、实战注意事项
  1. 性能优化

    • 批量操作:使用DocumentFragment减少重绘
    const fragment = document.createDocumentFragment(); for(let i=0; i<100; i++) { const li = document.createElement("li"); fragment.appendChild(li); } document.getElementById("list").appendChild(fragment);
  2. 现代API替代方案

    • 使用querySelector/querySelectorAll替代getElementById
    document.querySelector(".container > button"); // CSS选择器语法

总结

DOM操作的核心在于理解节点树结构,通过内容→属性→样式→节点的递进式操作,结合事件机制实现动态交互。建议优先使用现代API(如classListdataset)并注意性能与安全性,可显著提升开发效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 18:41:45

linux genpool 学习

一、背景与引入在 Linux 内核中&#xff0c;内存管理并不只局限于伙伴系统&#xff08;buddy allocator&#xff09;和 slab/slub 分配器。在许多设备驱动、SoC 子系统以及共享内存场景中&#xff0c;开发者往往需要管理一块地址固定、大小有限、分配规则特殊的内存区域&#x…

作者头像 李华
网站建设 2026/4/27 18:29:36

Github源码推荐 | Prometheus:让自主无人机开发更简单、更高效!

在无人机开发领域&#xff0c;从飞控底层到上层应用的跨越往往面临着巨大的技术门槛。如何快速验证算法&#xff1f;如何平滑地从仿真过渡到真机&#xff1f; 今天为大家介绍一款由阿木实验室&#xff08;Amov Lab&#xff09; 维护的重磅开源项目——Prometheus。 &#x1f31…

作者头像 李华
网站建设 2026/5/3 0:15:19

jQuery Mobile 表单选择

jQuery Mobile 表单选择 引言 jQuery Mobile 是一款流行的前端框架,它使得开发跨平台移动应用变得简单快捷。在移动应用中,表单是用户与应用交互的主要方式之一。而表单选择(Select)是表单中常见的控件,用于让用户从一系列选项中选择一个或多个值。本文将详细介绍 jQuer…

作者头像 李华
网站建设 2026/5/2 21:14:47

Spring Boot 与数据源的集成

Spring Boot 与数据源的集成源码分析 Spring Boot 是基于 Spring 框架构建的快速开发平台&#xff0c;它提供了一种自动化配置的方式来简化各种常见的开发任务&#xff0c;其中包括数据源的配置和集成。在 Spring Boot 中&#xff0c;数据源的集成不仅仅依赖于 Spring Data&am…

作者头像 李华
网站建设 2026/5/2 19:56:00

Dify 实战:通过 Dify 快速接入 MCP Server

作为一款领先的 LLM 应用开发平台&#xff0c;Dify 原生支持 MCP 协议&#xff0c;让开发者无需安装插件即可轻松对接各类 MCP Server&#xff0c;实现 AI 模型与外部工具的无缝交互。本文将演示如何在 Dify 中快速接入高德地图 MCP Server。 1. 前提条件 已在服务器中部署 D…

作者头像 李华