JavaScript中如何操作属性_GetAttribute和SetAttribute用对了吗
发布时间 - 2025-12-31 00:00:00 点击率:次getAttribute/setAttribute仅操作HTML属性而非DOM属性;如input.value是property,getAttribute('value')读初始值而非用户输入值;需区分使用场景,避免设了没生效或读错。
getAttribute 和 setAttribute 不是万能的属性操作工具
它们只处理 HTML 属性(attribute),不是 DOM 属性(property)。比如 input.value 是 property,而 input.getAttribute('value') 读的是初始 HTML 中写的值,不是用户输入后的真实值。混淆这两者,是绝大多数“设了没生效”或“读出来不对”的根源。
什么时候必须用 getAttribute / setAttribute
只在需要读写**HTML 源码中显式声明的属性**时才该用。典型场景包括:
-
data-自定义属性:如getAttribute('data-id')、setAttribute('data-loaded', 'true') - 布尔属性的原始存在性判断:如
hasAttribute('disabled')(注意不是getAttribute('disabled') === 'disabled') - 需要保留属性字符串原始形式时:比如
class属性要完整读取 HTML 写的值(不含 JS 动态添加的类) - 操作非标准属性(如
xmlns、role)或 SVG 特有属性(如viewBox)
哪些常见属性不能靠 setAttribute 改变行为
以下属性修改 setAttribute 后看似成功,但 UI 或逻辑不会响应变化:
-
value:对设定后只影响初始值,不更新当前显示内容;应直接赋值el.value = 'xxx' -
checked/selected/disabled:这些是布尔 property,设为setAttribute('checked', 'checked')只影响 HTML 源码,不触发控件状态切换;正确做法是el.checked = true -
style:虽然setAttribute('style', 'color:red')能生效,但会覆盖全部内联样式;推荐用el.style或
.color = 'red'el.style.cssText += ';color:red' -
innerHTML:根本不是属性,是 property;setAttribute('innerHTML', '...')会变成一个无意义的 HTML attribute
兼容性与性能上容易被忽略的点
getAttribute 和 setAttribute 在所有现代浏览器中行为一致,但要注意:
立即学习“Java免费学习笔记(深入)”;
- 对不存在的 attribute,
getAttribute返回null(不是undefined),做严格比较时别漏掉 - 传入空字符串或
null给setAttribute,会设成空字符串值,而非移除属性;要移除得用removeAttribute - 频繁操作大量元素的 class 或 style 时,批量用
className或classList比反复setAttribute('class', ...)更快且安全 - 在 SVG 元素上操作某些属性(如
fill、cx)时,部分旧版 IE 要求用setAttributeNS,但现代环境基本可忽略
const el = document.querySelector('input');
el.setAttribute('value', 'new'); // 不改变当前输入框显示内容
console.log(el.getAttribute('value')); // 'new'(HTML 属性值)
console.log(el.value); // 用户当前输入的内容,或原 value 属性初始值
el.value = 'updated'; // 正确更新显示值
el.setAttribute('data-status', 'done'); // 正确写自定义属性
el.removeAttribute('data-temp'); // 正确移除,而不是 setAttribute('data-temp', null)
真实 DOM 操作里,属性和 property 的边界比文档描述得更模糊——尤其在表单控件和事件绑定之后,property 状态可能已脱离 HTML attribute 的原始影子。动手前先问一句:我要改的是“HTML 文本里怎么写的”,还是“这个元素此刻该怎么表现”。
# css
# javascript
# java
# html
# js
# svg
# 浏览器
# 工具
# ssl
# red
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel定时任务怎么设置_Laravel Crontab调度器配置
佛山企业网站制作公司有哪些,沟通100网上服务官网?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
Python文本处理实践_日志清洗解析【指导】
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
javascript如何操作浏览器历史记录_怎样实现无刷新导航
高防服务器如何保障网站安全无虞?
如何快速建站并高效导出源代码?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
微信公众帐号开发教程之图文消息全攻略
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
JavaScript如何操作视频_媒体API怎么控制播放
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何批量查询域名的建站时间记录?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
使用Dockerfile构建java web环境
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Python制作简易注册登录系统
Swift中swift中的switch 语句
iOS验证手机号的正则表达式
WEB开发之注册页面验证码倒计时代码的实现
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何快速配置高效服务器建站软件?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
浅述节点的创建及常见功能的实现
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
如何在阿里云购买域名并搭建网站?
如何快速搭建个人网站并优化SEO?
如何在腾讯云服务器上快速搭建个人网站?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
如何用低价快速搭建高质量网站?
JS中对数组元素进行增删改移的方法总结
如何快速打造个性化非模板自助建站?
高端建站三要素:定制模板、企业官网与响应式设计优化
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
免费视频制作网站,更新又快又好的免费电影网站?
昵图网官方站入口 昵图网素材图库官网入口
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
网站优化排名时,需要考虑哪些问题呢?
如何在景安云服务器上绑定域名并配置虚拟主机?


.color = 'red'