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

JavaScript如何通过单个输入框生成多个输入框并获取全部值

问题根因

原代码无法正确获取所有输入框值,由两个核心逻辑错误导致:

  • 反复通过innerHTML +=追加内容时,浏览器会重新解析渲染demo2下的所有DOM,已生成输入框的已输入内容、绑定状态都会被重置
  • 取值逻辑写死了取multipleInput[0]也就是第一个匹配类名的输入框值,无论哪个输入框触发回车事件,都只会读取第一个输入框的内容
正确实现代码

HTML部分(原有代码无需调整,保持如下即可)

<!DOCTYPE html>
<html lang="en">
<head>
       <meta charset="UTF-8">
       <meta http-equiv="X-UA-Compatible" content="IE=edge">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <link rel="stylesheet" href="style.css">
       <title>Coding</title>
</head>
<body>
       <input type="text" id="singleInput">
       <div id="demo">
          <p id="demo2"></p>
       </div>
       <script src="script.js"></script>
</body>
</html>

JavaScript修正代码

const singleInput = document.getElementById('singleInput')
const demo2 = document.getElementById('demo2')
const multipleInputValue = []

singleInput.addEventListener('keyup', function (event) {
       if (event.key === 'Enter' && singleInput.value.trim()) {
              // 创建文本节点展示输入的标签内容,避免innerHTML重绘问题
              const labelText = document.createTextNode(singleInput.value)
              // 创建新的数字输入框
              const newInput = document.createElement('input')
              newInput.type = 'number'
              newInput.className = 'multipleInput'
              // 直接给新输入框绑定回车取值事件
              newInput.addEventListener('keyup', getValue)
              // 追加换行符
              const br = document.createElement('br')

              // 按顺序把节点插入容器
              demo2.append(labelText, newInput, br)
              // 清空初始输入框,方便下次输入
              singleInput.value = ''
       }
})

function getValue(event) {
       if (event.key === 'Enter' && event.target.value.trim()) {
              // 直接读取当前触发事件的输入框的值,不需要通过类名集合取固定索引
              multipleInputValue.push(event.target.value)
              // 调试用:控制台可查看已收集的所有输入值
              console.log('当前收集到的所有输入值:', multipleInputValue)
       }
}
实现说明
  • 改用createElement+append的方式新增节点,不会重绘已有DOM,不会丢失之前输入框的已输入内容
  • 每个新生成的输入框单独绑定事件,取值时直接通过event.target拿到当前操作的输入框实例,读取对应值即可
  • 新增空值校验,避免无效输入生成空标签、存入空数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 13:09:16