当前位置: 首页 > news >正文

前端原生Js批量修改页面元素属性的2个方法

image

前言

嘿,朋友们!今天咱们来聊聊一个前端原生 JS 的小技巧。

今天在做一个 RPA 机器人时,碰到一个业务需求,网页上有两个日期控件元素,它们的输入框有 readonly 属性,只能通过选择的方式来输入日期,但需求要求能够手动输入日期,如:

<input readonly="readonly" placeholder="开始日期" type="text" class="t-date-picker">
<input readonly="readonly" placeholder="结束日期" type="text" class="t-date-picker">

现在需要通过 Js 获取这两个控件元素,删掉 readonly 属性,应该怎么做呢?有 2 个方法可以实现。

方法1:使用 getElementsByClassName

// 获取所有具有指定类名的 input 元素
const inputs = document.getElementsByClassName('t-date-picker');// 循环遍历每个 input 元素并去掉 readonly 属性
for (let i = 0; i < inputs.length; i++) {inputs[i].removeAttribute('readonly');// 或者使用 inputs[i].readOnly = false;
}

方法2:使用 querySelectorAll

// 获取所有具有指定类名的 input 元素
const inputs = document.querySelectorAll('.t-date-picker');// 使用 forEach 方法去掉 readonly 属性
inputs.forEach(input => {input.removeAttribute('readonly');// 或者使用 input.readOnly = false;
});

总结

到这里,我们已经成功地帮这两个日期控件 “解放” 出来了!那么,回顾一下这两个方法的特点:

  1. document.getElementsByClassName 返回一个类数组对象,这意味着它可以使用索引来访问,即使用 for 循环来遍历,但不能直接使用 forEach 循环。

  2. 相对而言,document.querySelectorAll 返回的是一个 NodeList 对象,操作时更加灵活,可以使用 forEach 方法遍历。

  3. 如果你知道某个控件元素是独一无二的,那么可以使用 getElementById(如果元素有 ID) 或 querySelector 更加高效。

往期精彩

  1. 闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
  2. 常用的 4 种 ORM 框架(EF Core,SqlSugar,FreeSql,Dapper)对比总结

我是老杨,一个执着于编程乐趣、至今奋斗在一线的 10年+ 资深研发老鸟,是软件项目管理师,也是快乐的程序猿,持续免费分享全栈实用编程技巧、项目管理经验和职场成长心得。欢迎关注老杨的公众号,相互交流,共同进步!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SprinBoot+Vue在线商城微信小程序的设计与实现
  • 数据库系统 第36节 数据库镜像
  • 【网络安全】XSS(新)+Amazon账户劫持复现
  • 【软件设计】常用设计模式--概述
  • 无人机+应用综合实训室解决方案
  • Linux教程8:文本编辑命令vi
  • 哪款宠物空气净化器能更好的清理浮毛?希喂、352、IAM测评分享
  • 「Python程序设计」循环控制:for和while循环语句
  • SQL进阶技巧:如何查询最近一笔有效订单? | 近距离有效匹配问题
  • 进程间通信方式(共享内存、信号灯集、消息队列)
  • 【重学 MySQL】五、MySQL 的卸载
  • C++——类与对象(一)
  • 海绵城市雨水监测系统
  • XC企业建站系统V1.2.5
  • Mac 数据恢复技巧:恢复 Mac 上已删除的文件
  • 【译】JS基础算法脚本:字符串结尾
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • extjs4学习之配置
  • HTTP请求重发
  • Java方法详解
  • java取消线程实例
  • laravel with 查询列表限制条数
  • Laravel5.4 Queues队列学习
  • leetcode386. Lexicographical Numbers
  • Vue.js-Day01
  • vue:响应原理
  • 初识 webpack
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 前端面试总结(at, md)
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 王永庆:技术创新改变教育未来
  • 微信公众号开发小记——5.python微信红包
  • 用Canvas画一棵二叉树
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #1014 : Trie树
  • #162 (Div. 2)
  • #知识分享#笔记#学习方法
  • (13)Hive调优——动态分区导致的小文件问题
  • (7)STL算法之交换赋值
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (办公)springboot配置aop处理请求.
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (回溯) LeetCode 77. 组合
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (七)Knockout 创建自定义绑定
  • (十八)Flink CEP 详解
  • (四)汇编语言——简单程序
  • (转)scrum常见工具列表
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • **python多态