getAttribute是JavaScript中获取元素HTML属性原始字符串值的标准方法,返回标签中实际写入的值(如id、src、data-*等),对不存在属性返回null;不反映实时状态或计算结果。

getAttribute 是 JavaScript 中用于获取 DOM 元素**属性(attribute)**值的标准方法,它读取的是 HTML 标签中**实际写在标签上的字符串值**,而不是元素的属性(property)或计算后的状态。
获取原生 HTML 属性值
对标准 HTML 属性(如 id、class、src、href、disabled 等),getAttribute 返回其在 HTML 中声明的原始字符串值:
-

el.getAttribute('id')→"logo"el.getAttribute('src')→"/logo.png"el.getAttribute('alt')→"公司标志" -
btn.getAttribute('disabled')→""(空字符串,因为该布尔属性没赋值)
注意:btn.disabled(property)才是true,而getAttribute('disabled')只看标签是否写了disabled这个属性
获取自定义属性(data-*)
HTML5 规范允许使用以 data- 开头的自定义属性,getAttribute 是读取它们最直接的方式:
-
el.getAttribute('data-user-id')→"123"el.getAttribute('data-role')→"admin"el.getAttribute('data-is-active')→"true"(注意:始终是字符串,不是布尔值) - ⚠️ 不要写成
el.getAttribute('userId')—— 必须带data-前缀,大小写敏感
getAttribute 和 property 的关键区别
容易混淆的是:有些属性既有 attribute(HTML 中写的),也有对应的 DOM property(JS 对象上的属性),二者行为不同:
-
input.getAttribute('value')→"初始值"(只读初始 HTML 值)input.value→ 当前输入框内容(可变,反映实时状态) -
@#@#@#@#@#@#@#@#@#@0a.getAttribute('href')→"/home"(相对路径,原文本)a.href→"https://example.com/home"(完整绝对 URL) - 对于布尔属性(
checked、selected、disabled等):getAttribute返回字符串(存在即""或属性值);
对应 property(如el.checked)返回true/false
什么时候不用 getAttribute?
以下情况建议用其他方式代替:
- 想获取/设置实时状态(如 input 输入内容、checkbox 是否勾选)→ 用
.value、.checked、.selected等 property - 读取
data-属性但希望自动转换类型(如数字、布尔)→ 可结合dataset:el.dataset.userId→"123"(字符串)JSON.parse(el.dataset.config)或手动转换 - 需要兼容旧浏览器且频繁操作 class →
el.className或el.classList更可靠
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











