You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取多个input的name属性存入数组遇问题:点击按钮后数组仍为空

问题分析与解决办法

嘿,我一眼就看到你代码里的两个关键问题,导致点击按钮后数组是空的:

1. DOM元素还没加载就执行了选择器

你的脚本写在HTML结构的前面,当浏览器执行var inputs = $("input[type='text']")这行代码时,页面上的文本输入框还没被渲染出来呢!这时候inputs其实是一个空的jQuery集合,循环自然不会往数组里推任何东西。

2. 循环里错误地引用了整个input集合

就算解决了DOM加载的问题,你在each循环里用inputs.attr("name")也不对——这个写法只会获取第一个input元素的name属性,而不是当前遍历到的那个input的属性。应该用$(this)来指向循环中的当前元素。


修正后的代码方案

方案一:用DOM就绪回调包裹代码

把你的jQuery代码放在$(document).ready()里,确保页面所有元素加载完成后再执行选择器:

$(document).ready(function() {
  var inputs = $("input[type='text']"), outputs = [];
  
  $("#submit").click(function() {
    outputs = []; // 每次点击清空数组,避免重复添加之前的内容
    inputs.each(function() {
      outputs.push($(this).attr("name"));
    });
    console.log(outputs); // 现在会输出 ["forename", "middlename", "lastname"]
  });
});

方案二:把脚本移到HTML末尾

直接把<script>标签放在</body>标签之前,这样DOM已经完全加载,不需要额外的就绪回调:

<div>
  <label for="Forename"> Forename </label>
  <input type="text" id="Forename" name="forename">
</div>
<div>
  <label for="Middlename"> Middle Names </label>
  <input type="text" id="Middlename" name="middlename">
</div>
<div>
  <label for="Lastname"> Lastname </label>
  <input type="text" id="Lastname" name="lastname">
</div>
<p id="message"></p>
<input type="button" id="submit" value="submit">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
var inputs = $("input[type='text']"), outputs = [];

$("#submit").click(function() {
  outputs = [];
  inputs.each(function() {
    outputs.push($(this).attr("name"));
  });
  console.log(outputs);
});
</script>

更简洁的写法:用jQuery的map方法

你还可以用map方法直接提取name属性,省去手动循环的步骤,代码更简洁:

$(document).ready(function() {
  $("#submit").click(function() {
    var outputs = $("input[type='text']").map(function() {
      return $(this).attr("name");
    }).get(); // 把jQuery对象转换成普通数组
    console.log(outputs);
  });
});

这样每次点击都会重新获取当前页面上的文本输入框的name属性,就算后续动态添加了input也能正确提取。


内容的提问来源于stack exchange,提问作者one-hand-octopus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:42:36