掌握DOM属性操作:从入门到实战的完整指南

更新日期: 2026-03-15 阅读: 45 标签: dom

你是否在操作dom属性时经常遇到问题?比如明明写了属性却读不到,自定义属性不知道该怎么用,class属性还得特殊记……其实DOM属性操作并不复杂,掌握了传统属性和html5自定义属性的用法,你就能轻松搞定。


一、先了解什么是DOM属性

我们来看看这段HTML代码

<img src="1.jpg" class="box" alt="图片">

在DOM(文档对象模型)中,img是一个元素节点,而src、class、alt就是它的属性节点。属性就是用来描述元素的,就像我们给照片添加的说明文字。

这里有个很重要的概念要搞清楚:

元素自带属性:指HTML标签里写的那些属性(比如src、class、id),这些属性和DOM元素是绑定的。

对象扩展属性:指我们把DOM元素当作一个JavaScript对象,手动给它添加的属性或方法。比如img.aaa = 123,这种属性和HTML标签没关系,不会在HTML代码里显示出来。


二、传统DOM属性的三种操作

1. 读取属性值

方式一:直接用点语法

对于原生的HTML属性(src、href、id这些),我们可以直接用元素.属性名的方式来读取。但要注意,自定义属性是读不到的!

<img id="myImg" src="test.jpg" alt="测试图片" abc="自定义">

<script>
let img = document.getElementById("myImg");

// 读取原生属性没问题
console.log(img.src);  // 输出图片的完整路径
console.log(img.alt);  // 输出:测试图片

// 读取自定义属性,结果为空
console.log(img.abc);  // undefined
</script>

方式二:用getAttribute()方法

这个方法就厉害了,不管是原生属性还是自定义属性,它都能读到。

<img id="myImg" src="test.jpg" abc="自定义">

<script>
let img = document.getElementById("myImg");

console.log(img.getAttribute("src"));  // 输出:test.jpg
console.log(img.getAttribute("abc"));  // 输出:自定义
</script>

特别提醒:因为class是JavaScript的保留字,所以用点语法的时候要写成className:

img.className  // 正确
img.getAttribute("class")  // 这样也可以

2. 设置属性值

用setAttribute()方法可以给元素添加或修改属性。如果属性已经存在,就覆盖原来的值;如果属性不存在,就新建一个。

<div id="box">我是盒子</div>

<script>
let box = document.getElementById("box");

// 修改id属性
box.setAttribute("id", "newBox");

// 添加自定义属性
box.setAttribute(">, "我是自定义属性");

// 添加title属性
box.setAttribute("title", "鼠标悬停时显示");
</script>

3. 删除属性值

用removeAttribute()方法可以删除不需要的属性。

<div id="box" class="red" title="提示">我是盒子</div>

<script>
let box = document.getElementById("box");

box.removeAttribute("class");  // 删除class属性
box.removeAttribute("title");  // 删除title属性
</script>

删除后,HTML代码就变成了<div id="box">我是盒子</div>。


三、HTML5自定义属性

以前我们写自定义属性很随意,比如abc="123"。HTML5推出了规范的自定义属性,要求必须以>dataset属性的用法

每个DOM元素都有一个dataset对象,专门用来管理>

  • 设置属性:元素.dataset.属性名 = 值

  • 读取属性:元素.dataset.属性名

  • 注意:属性名会自动转成小写。比如>dataset.myname。

    实际使用示例

    <div id="user" >="张三" >="20" >="男">
      用户信息
    </div>
    
    <script>
    let user = document.getElementById("user");
    
    // 读取HTML5自定义属性
    console.log(user.dataset.name);   // 输出:张三
    console.log(user.dataset.age);    // 输出:20
    console.log(user.dataset.mysex);  // 输出:男(大写转小写)
    
    // 添加新的自定义属性
    user.dataset.address = "北京";
    // 这会在标签上自动添加
    
    // 修改原有属性
    user.dataset.age = "21";
    </script>

    vue中使用

    Vue里经常用>

    <template>
      <button @click="getInfo" >="1001" >="Vue实战">
        点击获取信息
      </button>
    </template>
    
    <script>
    export default {
      methods: {
        getInfo(e) {
          console.log(e.target.dataset.id);     // 输出:1001
          console.log(e.target.dataset.title);  // 输出:Vue实战
        }
      }
    }
    </script>

    四、属性操作对比表

    操作类型方法适用场景注意事项
    读属性元素.属性名原生属性(src、id、href等)自定义属性读不到
    读属性getAttribute()所有属性(原生+自定义)推荐使用,最可靠
    设属性setAttribute()所有属性(原生+自定义)存在就覆盖,不存在就添加
    删属性removeAttribute()所有属性彻底删除属性
    HTML5属性dataset>自动转小写,Vue常用

    五、新手常犯的三个错误

    1. class属性的读写:用点语法要写className,用getAttribute()要写class,别搞混了。

    2. 自定义属性的读取:直接点语法读不到自定义属性,必须用getAttribute()方法。

    3. HTML5属性名的大小写:>dataset.myName,>dataset.myname(全小写)。


    总结

    DOM属性操作其实很简单,记住两点就行:

    • 传统属性:用getAttribute()、setAttribute()、removeAttribute()这三个方法,能处理所有情况

    • HTML5自定义属性:用dataset对象,专门处理以>掌握了这些,以后操作DOM属性就不会踩坑了。无论是写原生JavaScript还是用Vue框架,都能轻松应对。

    本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

    链接: https://fly63.com/article/detial/13422

    相关推荐

    全面理解虚拟DOM,实现虚拟DOM

    DOM是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的。虚拟的DOM的核心思想是:对复杂的文档DOM结构,提供一种方便的工具,进行最小化地DOM操作。

    js实现DOM遍历_遍历dom树节点方法

    遍历DOM节点常用一般用节点的 childNodes, firstChild, lastChild, nodeType, nodeName, nodeValue属性。在获取节点nodeValue时要注意,元素节点的子文本节点的nodeValue才是元素节点中文本的内容。

    vue中使用ref获取dom对象

    本文适用于所有使用 Vue 的开发人, 包括初学者。在阅读本文之前,你应该具备一些前提条件:Node.js 10.x或更高版本。在终端或命令提示符下运行 node -v 来验证你的版本;npm 6.7 或以上版本;代码编辑器;我强烈推荐 Visual Studio Code

    getHTML() - 替代 innerHTML 的最佳方法

    getHTML()为开发者提供了一种强大的方法来处理包含Shadow DOM的复杂DOM结构。虽然它有一些限制,但在处理现代Web组件和复杂UI时,getHTML()的优势是显而易见的。随着Web组件的普及,掌握getHTML()将成为前端开发者的重要技能。

    vuejs2.0如何获取dom元素自定义属性值

    设置定义属性值 :data-value=.., 2.直接获取 3.通过this.$refs.***获取 1.目标DOM定义ref值: 2.通过 【this.$refs.***.属性名】 获取相关属性的值: this.$refs.*** 获取到对应的元素 ...

    HTML文档解析和DOM树的构建

    浏览器解析HTML文档生成DOM树的过程,以下是一段HTML代码,以此为例来分析解析HTML文档的原理.解析HTML文档构建DOM树的理解过程可分为两个主要模块构成,即标签解析、DOM树构建

    原生js获取DOM对象的几种方法

    javascript获取DOM对象的多种方法:通过id获取 、通过class获取、通过标签名获取、通过name属性获取、通过querySelector获取、通过querySelectorAll获取等

    关于DOM操作是异步的还是同步的相关理解

    先列出我的理解,然后再从具体的例子中说明:DOM操作本身应该是同步的(当然,我说的是单纯的DOM操作,不考虑ajax请求后渲染等);DOM操作之后导致的渲染等是异步的(在DOM操作简单的情况下,是难以察觉的)

    详解 HTML attribute 和 DOM property

    在大多数的文章中,attribute 一般被翻译为“特性”,property 被译为“属性”。把结论写在最前面,如果你全都懂,后面就不用看了。当我们书写 HTML 代码的时候

    JavaScript DOM事件模型

    早期由于浏览器厂商对于浏览器市场的争夺,各家浏览器厂商对同一功能的JavaScript的实现都不进相同,本节内容介绍JavaScript的DOM事件模型及事件处理程序的分类。

    点击更多...

    内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!