JavaScript DOM操作全解析

JavaScript DOM 核心操作指南

一、基础内容操作
  1. 文本内容修改
javascript 复制代码
// 获取元素
const element = document.getElementById("demo");

// 修改纯文本
element.textContent = "新文本内容";

// 修改带HTML的内容(注意安全风险)
element.innerHTML = "<strong>加粗文本</strong>";
  1. 表单元素值操作
javascript 复制代码
const input = document.querySelector("input");
console.log(input.value); // 获取值
input.value = "新输入值"; // 设置值
二、节点操作核心
  1. 节点创建与添加
javascript 复制代码
// 创建新节点
const newDiv = document.createElement("div");
newDiv.className = "box";

// 添加文本节点
const textNode = document.createTextNode("动态内容");
newDiv.appendChild(textNode);

// 插入到DOM
document.body.appendChild(newDiv);
  1. 节点删除与替换
javascript 复制代码
const parent = document.getElementById("container");
const oldChild = parent.querySelector(".old");

// 删除节点
parent.removeChild(oldChild);

// 替换节点
const newChild = document.createElement("span");
parent.replaceChild(newChild, oldChild);
三、属性操作
javascript 复制代码
const img = document.querySelector("img");

// 设置属性
img.setAttribute("src", "new-image.jpg");

// 获取属性
const altText = img.getAttribute("alt");

// 移除属性
img.removeAttribute("title");
四、事件处理
javascript 复制代码
const button = document.getElementById("btn");

// 添加事件监听
button.addEventListener("click", function(event) {
  console.log("按钮被点击", event.target);
});

// 事件委托示例
document.body.addEventListener("click", function(e) {
  if(e.target.classList.contains("item")) {
    console.log("点击了项目:", e.target.id);
  }
});
五、高级节点操作
  1. 克隆节点
javascript 复制代码
const original = document.querySelector(".template");
const clone = original.cloneNode(true); // 深度克隆
clone.id = "newInstance";
document.body.appendChild(clone);
  1. 节点遍历
javascript 复制代码
const parent = document.getElementById("list");

// 子节点遍历
parent.childNodes.forEach(node => {
  if(node.nodeType === Node.ELEMENT_NODE) {
    console.log("元素节点:", node.tagName);
  }
});

// 父节点回溯
let current = parent.firstChild;
while(current) {
  console.log(current);
  current = current.nextSibling;
}
实战案例:动态表格操作
javascript 复制代码
function addTableRow() {
  const table = document.querySelector("table");
  const newRow = table.insertRow(-1); // 末尾插入
  
  const cell1 = newRow.insertCell(0);
  const cell2 = newRow.insertCell(1);
  
  cell1.textContent = "新数据";
  cell2.innerHTML = '<input type="checkbox">';
}

// 删除最后一行
function removeLastRow() {
  const table = document.querySelector("table");
  if(table.rows.length > 1) {
    table.deleteRow(table.rows.length - 1);
  }
}

注意事项

  1. 操作innerHTML时需防范XSS攻击
  2. 批量DOM操作建议使用DocumentFragment优化性能
  3. 事件绑定后及时使用removeEventListener解除引用
  4. 现代开发优先使用textContent而非innerText

通过掌握这些核心操作,您将能高效处理页面动态交互,构建响应式Web应用。

相关推荐
微风中的麦穗1 小时前
【MATLAB】MATLAB R2025a 详细下载安装图文指南:下一代科学计算与工程仿真平台
开发语言·matlab·开发工具·工程仿真·matlab r2025a·matlab r2025·科学计算与工程仿真
2601_949146531 小时前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
开源技术1 小时前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
学嵌入式的小杨同学1 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
mftang3 小时前
Python 字符串拼接成字节详解
开发语言·python
jasligea3 小时前
构建个人智能助手
开发语言·python·自然语言处理
yuezhilangniao3 小时前
AI智能体全栈开发工程化规范 备忘 ~ fastAPI+Next.js
javascript·人工智能·fastapi
kokunka3 小时前
【源码+注释】纯C++小游戏开发之射击小球游戏
开发语言·c++·游戏
云栖梦泽4 小时前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言
java1234_小锋4 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试