当前位置: 首页 > news >正文

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)并注意性能与安全性,可显著提升开发效率。

http://www.jsqmd.com/news/330985/

相关文章:

  • 2026年 碳纤维管材厂家推荐榜单:高强度轻量化碳纤维管/碳纤维管材,专业定制与创新应用深度解析
  • 2026年碳纤维板厂家推荐排行榜:高强度轻量化碳纤维板材,航空航天/汽车工业专用定制源头工厂精选
  • ArcGIS Pro开发学习
  • 洛谷 P3383:线性筛素数 ← 埃氏筛
  • 电磁波的反射与透射
  • 2026年 数控小钢炮厂家推荐排行榜:高刚性/高光/4万转/20-30KW大主轴/全自动换刀/龙门结构/粗精加工一体/西门子数控系统,性能强悍之选!
  • 【题解】SS221101C.iiidx
  • Flink Agents 0.1.0 发布公告 - 教程
  • 2026年碳纤维制品厂家推荐榜单:碳纤维羽毛球拍/网球拍/台球杆/自行车车架/无人机/运动器材/医疗器械等高端轻量化产品源头实力解析
  • 汉中串串综合排名榜(2026本地精选)
  • 方寸微PT153s芯片,国产USB转RJ45千兆网口芯片,替代RTL8153b方案
  • 方寸微T153s芯片,国产USB转RJ45千兆网口芯片,替代RTL8153b方案
  • 2026年方管厂家实力推荐榜:友发牌/镀锌/低合金/不锈钢/冷拔无缝等全品类优质品牌深度解析与选购指南
  • 用Python实现第一个量子机器学习模型完整教程:Qiskit与TensorFlow集成
  • 04课程:10、11通过yum安装Nginx~12简单源码安装和yum安装的区别~13通过Nginx源码复杂安装
  • Github源码推荐 | Prometheus:让自主无人机开发更简单、更高效!
  • 2026年 热熔胶厂家推荐排行榜:热熔胶颗粒/热熔胶块/压敏胶/聚烯烃热熔胶/聚酰胺热熔胶/EVA热熔胶/滤清器热熔胶/快递袋热熔胶/包装热熔胶/标签热熔胶,专业粘合解决方案
  • 新域名 oierin.top
  • 实用指南:Ubuntu 虚拟机配置静态 IP
  • 仿真引擎——构建系统跳动的心脏
  • 基于ssm+vue+mysql的爱心商城系统(源码+部署调试+大文档+讲解)
  • 2026年 云南旅行社推荐榜单:诚信地接+包车导游服务,火车站附近接送机一站式解决方案
  • 系统自动触发的登出逻辑*
  • 2026年 台湾物流专线服务商推荐排行榜:台湾专线物流/整柜运输/清关派送/电商物流/小三通物流/大件物流/海运运输,高效稳定跨境解决方案
  • U654615 比特聚集(bit)补题报告
  • 虚拟机需要连外网,同时笔记本连接wlan,IP经常变,该怎么配置网络?
  • 计算机毕业设计 | SpringBoot+vue高校迎新系统 新生报道高校宣传招生平台(附源码)
  • QTCreator error: C3861: “_mm_loadu_si64”: 找不到标识符
  • java: lambda表达式(极简解释)(自用)
  • 实用指南:RabbitMQ 在拼团系统中的应用:延迟队列、订单超时与消息幂等