news 2026/5/1 23:53:46

如何使用JavaScript操作DOM节点的属性?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何使用JavaScript操作DOM节点的属性?

一、核心概念:DOM 属性的两类形式

在操作前先分清两个易混概念,避免踩坑:

  • HTML 原生属性:标签上写的属性(如id="box"src="img.jpg"class="content");
  • DOM 对象属性:JS 获取 DOM 节点后,节点对象自带的属性(如node.idnode.srcnode.className);大部分场景下两者可以互通,但部分属性有专属写法(比如class对应className)。

二、通用操作:getAttribute/setAttribute/removeAttribute

这是操作所有 HTML 属性的通用方法,无论原生属性还是自定义属性都适用,兼容性最好。

方法作用语法示例
getAttribute(属性名)获取属性值box.getAttribute('id')
setAttribute(属性名, 值)设置 / 新增属性box.setAttribute('title', '提示文字')
removeAttribute(属性名)删除属性box.removeAttribute('class')
代码示例:通用方法操作属性

html

预览

<div id="box" class="container" data-index="1">测试div</div> <script> const box = document.getElementById('box'); // 1. 获取属性 console.log(box.getAttribute('id')); // 输出:box console.log(box.getAttribute('class')); // 输出:container console.log(box.getAttribute('data-index')); // 输出:1(自定义属性) // 2. 设置/新增属性 box.setAttribute('title', '这是一个div'); // 新增title属性 box.setAttribute('class', 'new-container'); // 修改class属性 box.setAttribute('data-type', 'test'); // 新增自定义data属性 // 3. 删除属性 box.removeAttribute('data-index'); // 删除data-index属性 // 查看修改后的HTML:<div id="box" class="new-container" data-type="test" title="这是一个div">测试div</div> console.log(box.outerHTML); </script>

三、快捷操作:DOM 对象直接访问属性

对于常用的原生属性(如 id、src、href、type 等),可以直接通过DOM节点.属性名操作,比通用方法更简洁。

⚠️ 注意:部分属性名和 HTML 标签里的写法不同(核心差异):

  • HTML 里的class→ JS 里的className(因为 class 是 JS 关键字);
  • HTML 里的for(label 标签) → JS 里的htmlFor
  • HTML 里的readonly→ JS 里的readOnly(驼峰命名)。
代码示例:快捷操作属性

html

预览

<img id="img" src="old.jpg" alt="旧图片"> <input type="text" id="input" class="form-input" readonly> <label for="input" id="label">输入框:</label> <script> const img = document.getElementById('img'); const input = document.getElementById('input'); const label = document.getElementById('label'); // 1. 获取属性 console.log(img.src); // 输出:完整的图片URL(如http://xxx/old.jpg) console.log(input.className); // 输出:form-input(对应class属性) console.log(label.htmlFor); // 输出:input(对应for属性) console.log(input.readOnly); // 输出:true(布尔值,不是字符串) // 2. 设置属性 img.src = 'new.jpg'; // 修改图片地址 img.alt = '新图片'; // 修改alt属性 input.className = 'new-form-input'; // 修改class input.readOnly = false; // 取消只读 // 3. 清空属性(部分属性可直接赋值为空) img.alt = ''; </script>

四、特殊属性处理

1. class 属性:推荐用 classList(操作样式类更灵活)

直接修改className会覆盖全部类,而classList支持「添加、移除、切换、判断」单个类,是操作样式类的最佳方式。

html

预览

<div id="demo" class="box">测试样式</div> <script> const demo = document.getElementById('demo'); // 1. 添加类(不会覆盖原有类) demo.classList.add('active', 'red'); // 可同时加多个类 // 2. 移除类 demo.classList.remove('box'); // 3. 切换类(有则删,无则加,适合点击切换场景) demo.classList.toggle('active'); // 4. 判断是否包含某个类 console.log(demo.classList.contains('red')); // 输出:true </script>
2. data-* 自定义属性:推荐用 dataset

HTML5 新增的data-*自定义属性(如data-iddata-name),可以通过dataset快捷访问,无需写getAttribute

html

预览

<div id="user" data-id="1001" data-user-name="张三">用户信息</div> <script> const user = document.getElementById('user'); // 1. 获取data属性(自动转驼峰:data-user-name → userName) console.log(user.dataset.id); // 输出:1001 console.log(user.dataset.userName); // 输出:张三 // 2. 设置data属性 user.dataset.age = '20'; // 新增data-age="20" user.dataset.userName = '李四'; // 修改data-user-name="李四" // 3. 删除data属性(赋值为null或delete) delete user.dataset.age; </script>
3. 布尔属性:如 checked、disabled、selected

这类属性的特点是「只要存在就生效」,JS 中对应的值是布尔类型(true/false),而非字符串。

html

预览

<input type="checkbox" id="checkbox" checked> <button id="btn" disabled>禁用按钮</button> <script> const checkbox = document.getElementById('checkbox'); const btn = document.getElementById('btn'); // 获取布尔属性 console.log(checkbox.checked); // 输出:true console.log(btn.disabled); // 输出:true // 修改布尔属性 checkbox.checked = false; // 取消勾选 btn.disabled = false; // 启用按钮 </script>

五、常用场景示例

示例 1:点击按钮切换图片

html

预览

<img id="banner" src="banner1.jpg" alt="轮播图1"> <button id="changeBtn">切换图片</button> <script> const banner = document.getElementById('banner'); const changeBtn = document.getElementById('changeBtn'); let isFirst = true; changeBtn.addEventListener('click', function() { if (isFirst) { banner.src = 'banner2.jpg'; banner.alt = '轮播图2'; } else { banner.src = 'banner1.jpg'; banner.alt = '轮播图1'; } isFirst = !isFirst; }); </script>
示例 2:获取表单输入框的属性并修改

html

预览

<input type="text" id="username" placeholder="请输入用户名" maxlength="10"> <button id="checkBtn">查看属性</button> <script> const username = document.getElementById('username'); const checkBtn = document.getElementById('checkBtn'); checkBtn.addEventListener('click', function() { // 获取输入框属性 console.log('占位符:', username.placeholder); console.log('最大长度:', username.maxLength); console.log('当前值:', username.value); // 修改属性 username.placeholder = '请输入真实姓名'; username.maxLength = 15; }); </script>

总结

  1. 通用场景:用getAttribute/setAttribute/removeAttribute操作所有属性(包括自定义属性);
  2. 常用原生属性:直接用DOM节点.属性名(如img.srcinput.className)更简洁;
  3. 特殊属性
    • class 用classList(add/remove/toggle);
    • data-* 自定义属性用dataset
    • 布尔属性(checked/disabled)赋值布尔值(true/false)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 13:42:23

提速60%!用AtlasOS让旧电脑7天焕新重生

提速60%&#xff01;用AtlasOS让旧电脑7天焕新重生 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atlas 你…

作者头像 李华
网站建设 2026/5/1 12:29:56

OpCore-Simplify:OpenCore配置工具的智能化演进与实践

OpCore-Simplify&#xff1a;OpenCore配置工具的智能化演进与实践 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpenCore作为黑苹果&#xff08;Hac…

作者头像 李华
网站建设 2026/4/22 21:57:17

[命令执行]问题的[自适应超时]解决方案研究

[命令执行]问题的[自适应超时]解决方案研究 【免费下载链接】claude-code Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling g…

作者头像 李华
网站建设 2026/5/1 8:30:50

基于SpringBoot的宠物商城网站毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于SpringBoot框架的宠物商城网站&#xff0c;以满足宠物爱好者在互联网上购买、交流以及获取宠物相关信息的需要。具体研究目的如…

作者头像 李华
网站建设 2026/4/17 22:23:23

2025年AI智能体开发完全指南:10个GitHub顶级教程资源助你从入门到精通

人工智能智能体&#xff08;AI Agents&#xff09;作为当前AI领域最具前沿性的技术方向&#xff0c;正在推动着自动化决策、多模态交互和复杂任务执行的革命性发展。本文精选了十个高质量的GitHub开源项目&#xff0c;涵盖从基础理论到实践应用的全方位学习路径&#xff0c;为A…

作者头像 李华
网站建设 2026/5/1 7:29:58

3个突破性前端资源瘦身技巧:从500KB到50KB的效率倍增方案

3个突破性前端资源瘦身技巧&#xff1a;从500KB到50KB的效率倍增方案 【免费下载链接】Font-Awesome The iconic SVG, font, and CSS toolkit 项目地址: https://gitcode.com/GitHub_Trending/fo/Font-Awesome 核心价值&#xff1a;通过精准优化技术&#xff0c;让前端资…

作者头像 李华