推荐使用 document.queryselectorall('input[type="password"]') 获取密码输入框,因其支持css属性选择器、无需手动遍历、语义清晰且兼容ie8+;getelementsbytagname 需手动筛选且易受动态type修改影响。

可以用 getElementsByTagName 获取所有 <input> 元素,再筛选出 type="password" 的那些。
获取所有 input 元素并过滤 type=password
因为 getElementsByTagName 只按标签名匹配,不支持直接按属性筛选,所以需要手动遍历判断:
const inputs = document.getElementsByTagName('input');
const passwordInputs = [];
for (let i = 0; i
更简洁写法:用 Array.from + filter
把类数组的 HTMLCollection 转成数组后用 filter 更直观:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
const passwordInputs = Array.from(
document.getElementsByTagName('input')
).filter(input => input.type === 'password');
注意 type 属性的值是否准确
确保元素确实设置了 type="password",而不是靠 CSS 或 JS 模拟的“密码效果”。常见坑点:
- 有些框架(如 Vue/React)可能用
type="text"配合inputmode="text"和遮罩逻辑,这类不算真正密码框 - 动态修改
input.type(比如切换显示/隐藏密码)会影响结果,需在修改后重新获取 -
input.getAttribute('type')和input.type在某些旧浏览器中行为略有差异,推荐用.type属性
替代方案:querySelectorAll(推荐)
如果目标是“所有密码输入框”,用 querySelectorAll 更直接、语义清晰且返回静态 NodeList:
const passwordInputs = document.querySelectorAll('input[type="password"]');
它支持 CSS 属性选择器,无需手动遍历,兼容性也足够(IE8+),日常开发中更常用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










