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

无法用JS获取输入框值,如何通过单个ID/name获取多input值?

问题排查与解决方案

嘿,我来帮你理清楚问题所在,你的代码里有几个关键错误导致无法正确获取输入框的值,先给你拆解下:

  1. HTML ID必须唯一:你给多个输入框甚至提交按钮都用了id="num",这违反了HTML的基础规范——每个元素的ID在页面里只能出现一次。这就导致document.getElementById('num')永远只能拿到第一个匹配的元素,根本碰不到后面的输入框。
  2. 函数调用错误:提交按钮的onclick属性应该写onclick="addition()"(要加括号触发函数执行),而不是onclick="addition",不然点击按钮时函数根本不会运行。
  3. 提交按钮ID冗余:提交按钮完全没必要用num这个ID,换成一个独立的标识比如submitBtn会更清晰。

接下来给你两种实用的实现方式,都能批量获取这些输入框的值,满足你“通过单个标识获取”的需求:

方式一:利用name属性获取

你已经给输入框设置了name="name[]",刚好可以用这个name来批量获取所有输入框:

<input type="text" name="name[]">
<input type="text" name="name[]">
<input type="submit" id="submitBtn" onclick="addition()">

<script>
function addition() {
    // 获取所有name为name[]的输入框元素
    const inputs = document.getElementsByName('name[]');
    // 遍历每个输入框,取出对应的值
    for (let i = 0; i < inputs.length; i++) {
        const val = inputs[i].value;
        alert(val);
    }
}
</script>

方式二:通过类名统一获取

如果不想依赖name属性,也可以给所有目标输入框加同一个类名,比如class="num-input",然后通过类名来获取:

<input type="text" class="num-input">
<input type="text" class="num-input">
<input type="submit" id="submitBtn" onclick="addition()">

<script>
function addition() {
    // 用querySelectorAll获取所有带num-input类的元素,支持forEach遍历
    const inputs = document.querySelectorAll('.num-input');
    inputs.forEach(input => {
        alert(input.value);
    });

    // 也可以用getElementsByClassName(返回HTMLCollection,适合传统for循环)
    // const inputs = document.getElementsByClassName('num-input');
    // for (let i = 0; i < inputs.length; i++) {
    //     alert(inputs[i].value);
    // }
}
</script>

小提示

  • 以后写HTML一定要记住ID唯一的规则,不然会出现很多莫名其妙的DOM操作问题。
  • querySelectorAll返回的是静态的NodeList,支持forEach;而getElementsByName、getElementsByClassName返回的是动态HTMLCollection,用传统for循环遍历更稳妥。

内容的提问来源于stack exchange,提问作者Ghufran Khalil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:49:03