HTML DOM 属性(保姆级教程)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观


前言

在网页开发中,HTML DOM 属性是连接静态页面与动态交互的核心桥梁。它允许开发者通过 JavaScript 直接访问和操作 HTML 元素的特性,从而实现页面内容的动态更新、样式调整或用户行为响应。无论是为按钮添加点击事件,还是根据用户输入修改文本内容,DOM 属性的应用场景贯穿于前端开发的各个环节。本文将从基础概念出发,逐步深入讲解 HTML DOM 属性的使用方法、实际案例及最佳实践,帮助开发者掌握这一关键技能。


一、HTML DOM 属性的基础概念

1.1 什么是 DOM?

DOM(Document Object Model,文档对象模型) 是一种跨平台的编程接口,它将 HTML 文档解析为树状结构的节点集合。每个 HTML 元素、属性、文本内容都对应一个节点,开发者可以通过 JavaScript 操作这些节点的属性、样式或内容。

形象比喻:可以把 DOM 想象成一棵“网页树”,每个 HTML 元素是树上的一个分支,而属性则是枝叶上的“特征标签”。例如,<div id="header"> 中的 id 属性就是该节点的“身份标识”。

1.2 属性与元素的关系

HTML 元素的属性(如 idclasssrc)定义了其行为或状态。通过 DOM,开发者可以:

  • 读取属性值(例如获取按钮的 disabled 状态)
  • 修改属性值(例如动态更新图片的 src 地址)
  • 删除或添加新属性(例如根据条件移除元素的 hidden 属性)

代码示例

<!-- HTML 结构 -->  
<img id="myImage" src="default.jpg" alt="默认图片">  
// JavaScript 通过 ID 获取元素  
const imgElement = document.getElementById("myImage");  

// 读取 src 属性值  
console.log(imgElement.src); // 输出 "default.jpg"  

// 修改 src 属性  
imgElement.src = "new-image.jpg";  

二、访问 HTML 元素的属性

2.1 常用属性访问方法

2.1.1 直接通过点语法访问

对于大多数 HTML 属性,可以直接通过 element.属性名 的方式获取或设置值。

案例:获取文本框的值

<input type="text" id="username" value="John Doe">  
const inputElement = document.getElementById("username");  
console.log(inputElement.value); // 输出 "John Doe"  
inputElement.value = "Jane Smith"; // 修改输入框内容  

2.1.2 使用 getAttribute()setAttribute()

对于非标准属性或需要兼容性处理的场景,可使用 getAttribute()setAttribute() 方法。

代码示例

// 获取自定义属性  
element.getAttribute("data-tooltip"); // 返回 "提示信息"  

// 设置新属性  
element.setAttribute("data-tooltip", "新提示内容");  

三、动态修改属性的常见场景

3.1 动态更新元素内容

通过修改 textContentinnerHTML 属性,可以实时更新页面文本。

案例:根据用户输入显示结果

<input type="text" id="input">  
<p id="output">结果将显示在此处</p>  
document.getElementById("input").addEventListener("input", (e) => {  
  const inputValue = e.target.value;  
  document.getElementById("output").textContent = `输入内容:${inputValue}`;  
});  

3.2 动态控制元素可见性

通过修改 style.display 属性或 hidden 属性,可以实现元素的隐藏/显示。

代码示例

// 方法一:修改样式  
document.getElementById("myDiv").style.display = "none";  

// 方法二:使用 hidden 属性  
document.getElementById("myDiv").hidden = true;  

3.3 动态绑定事件处理

通过 addEventListener() 方法为元素绑定事件监听器,并通过属性传递参数。

案例:按钮点击跳转

<button id="linkButton" data-url="https://example.com">跳转链接</button>  
document.getElementById("linkButton").addEventListener("click", (e) => {  
  const url = e.target.getAttribute("data-url");  
  window.location.href = url;  
});  

四、特殊属性的注意事项

4.1 样式属性的处理

直接修改 style 属性时需注意:

  • CSS 属性名需用驼峰命名(如 backgroundColor 而非 background-color
  • 需添加单位(如 width = "200px"

代码示例

const box = document.getElementById("box");  
box.style.width = "200px";  
box.style.backgroundColor = "#ff0000";  

4.2 表单元素的特殊属性

表单元素(如 <input><select>)具有 valuechecked 等属性,需通过特定方法获取或设置。

案例:复选框状态同步

<input type="checkbox" id="agree" checked>  
<p>是否同意:{{状态}}</p>  
document.getElementById("agree").addEventListener("change", (e) => {  
  const isChecked = e.target.checked;  
  document.querySelector("p").textContent = `是否同意:${isChecked ? "是" : "否"}`;  
});  

五、高级技巧:动态创建与删除元素

5.1 动态创建元素

通过 document.createElement()setAttribute() 方法,可以完全通过 JavaScript 创建元素并添加属性。

代码示例

// 创建新图片元素  
const newImg = document.createElement("img");  
newImg.setAttribute("src", "dynamic-image.jpg");  
newImg.setAttribute("alt", "动态生成的图片");  

// 将图片添加到页面  
document.body.appendChild(newImg);  

5.2 动态删除元素

通过 removeAttribute()remove() 方法删除属性或元素。

案例:移除按钮的点击事件监听器

const btn = document.getElementById("btn");  
btn.removeAttribute("onclick"); // 移除内联事件  
btn.remove(); // 直接删除元素  

六、最佳实践与常见问题

6.1 性能优化建议

  • 批量操作 DOM:避免频繁修改 DOM,可先操作文档碎片(DocumentFragment)再一次性更新
  • 使用委托事件:为父元素绑定事件,减少直接操作子元素的属性

6.2 常见错误与解决方案

  • 属性名拼写错误:如 innerHtml 而非 innerHTML
  • 作用域问题:确保元素在 DOM 加载后才能访问,可使用 DOMContentLoaded 事件

结论

HTML DOM 属性是前端开发的基石,它赋予开发者对网页元素的精细控制能力。从基础的属性读写到动态元素创建,掌握这些技能能够显著提升开发效率和用户体验。无论是构建交互式表单、实时数据展示,还是复杂的应用逻辑,DOM 属性的灵活运用都是不可或缺的工具。通过持续实践和案例分析,开发者可以逐步深入理解其底层原理,并在实际项目中发挥其最大潜力。


(全文约 1600 字)

最新发布