最直接有效的方式是使用 document.querySelectorAll('input[name="yourName"]'),它精准匹配同名 input 元素,兼容 IE8+,返回静态 NodeList;name 含特殊字符时需用引号包裹;不推荐 getElementsByName 因其不限标签类型且返回动态集合。

要获取页面中所有同名的输入框(即 name 属性值相同的 <input> 元素),最直接有效的方式是使用 document.querySelectorAll() 配合属性选择器。
用 querySelectorAll 获取同 name 的 input 集合
这是推荐方法,简洁、兼容性好(IE8+)、返回的是静态 NodeList,可遍历操作:
- 语法:
document.querySelectorAll('input[name="yourName"]') - 例如获取所有
name="hobby"的输入框:const hobbyInputs = document.querySelectorAll('input[name="hobby"]'); - 返回值是类数组对象,支持
forEach、展开运算符([...hobbyInputs])或转换为数组:Array.from(hobbyInputs)
注意 name 值含特殊字符时要转义
如果 name 值包含空格、点、括号等 CSS 选择器特殊字符(如 name="user.info" 或 name="items[0]"),需用双引号包裹并转义(或直接用双引号避免转义):
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- ✅ 正确:
document.querySelectorAll('input[name="user.info"]') - ✅ 正确:
document.querySelectorAll("input[name='items[0]']") - ❌ 错误:
document.querySelectorAll('input[name=items[0]]')(未加引号,语法错误)
不建议用 getElementsByName —— 它不限定标签类型
document.getElementsByName("xxx") 虽然能拿到同名元素,但它会匹配所有带该 name 的元素(包括 <button>、<select>、<textarea> 甚至 <form>),不局限于 <input>:
立即学习“Java免费学习笔记(深入)”;
- 如果你只要
<input>,它会多拿无关节点,后续还得过滤 - 返回的是 HTMLCollection(动态集合),不如 NodeList 灵活
- 所以更稳妥的做法仍是
querySelectorAll('input[name="xxx"]')
补充:检查是否获取到元素
操作前建议判断长度,避免空集合报错:
if (hobbyInputs.length > 0) { /* 安全处理 */ }- 或用可选链(现代环境):
hobbyInputs.forEach?.(el => el.value = '...');

















