最直接有效的方式是使用 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 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- ✅ 正确:
document.querySelectorAll('input[name="user.info"]') - ✅ 正确:
document.querySelectorAll("input[name='items[0]']") - ❌ 错误:
document.querySelectorAll('input[name=items[0]]')(未加引号,语法错误)
不建议用 getElementsByName —— 它不限定标签类型
document.getElementsByName("xxx") 虽然能拿到同名元素,但它会匹配所有带该 name 的元素(包括 <button></button>、<select></select>、<textarea></textarea> 甚至 <form></form>),不局限于 <input>:
- 如果你只要
<input>,它会多拿无关节点,后续还得过滤 - 返回的是 HTMLCollection(动态集合),不如 NodeList 灵活
- 所以更稳妥的做法仍是
querySelectorAll('input[name="xxx"]')
补充:检查是否获取到元素
操作前建议判断长度,避免空集合报错:
if (hobbyInputs.length > 0) { /* 安全处理 */ }- 或用可选链(现代环境):
hobbyInputs.forEach?.(el => el.value = '...');
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










