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

HTML+JS如何实现动态增删输入框并灵活计算用户输入值平均值

动态增删表单输入项+数值统计实现方案

以下是修正后可直接运行的完整代码,可实现输入项自由增删、实时统计输入框总数、自动计算输入数值平均值的需求:

<form>
   <div id="box">
    <input type="number" class="sj" placeholder="请输入数值"> 
    <input type="button" value="添加输入项" onclick="add_textbox()">
   </div>
   <!-- 统计结果展示区 -->
   <div style="margin-top: 16px;">
    <p>当前输入框总数:<span id="totalCount">0</span></p>
    <p>有效数值平均值:<span id="avgValue">0</span></p>
   </div>
</form>

<script>
const box = document.getElementById("box");
const totalCountEl = document.getElementById("totalCount");
const avgValueEl = document.getElementById("avgValue");

// 通用统计更新函数,增删操作、输入内容变化时统一调用
const updateStats = () => {
  // 获取所有数值输入框
  const allInputs = document.querySelectorAll('#box .sj');
  // 统计总数量:直接取DOM集合长度
  const total = allInputs.length;
  totalCountEl.textContent = total;

  // 计算平均值
  let validSum = 0;
  let validNum = 0;
  allInputs.forEach(input => {
    const val = parseFloat(input.value.trim());
    // 过滤空值、非数字类非法输入
    if (!isNaN(val)) {
      validSum += val;
      validNum++;
    }
  })
  // 无有效输入时显示0,避免除以0报错;有有效输入时保留2位小数
  avgValueEl.textContent = validNum === 0 ? '0' : (validSum / validNum).toFixed(2);
}

// 新增输入框逻辑
const add_textbox = () => {
  const newP = document.createElement('p');
  // 新增输入框统一加sj类名,和初始输入框保持一致,方便统一选取
  newP.innerHTML = "<input type='number' class='sj' placeholder='请输入数值'> <input type='button' value='删除' onclick='remove(this)'>";
  box.appendChild(newP);
  // 新增完成后刷新统计结果
  updateStats();
}

// 删除输入框逻辑
const remove = (obj) => {
  box.removeChild(obj.parentNode);
  // 删除完成后刷新统计结果
  updateStats();
}

// 事件委托:监听所有输入框的输入动作,实时更新统计结果,无需给新增输入框单独绑定事件
box.addEventListener('input', (e) => {
  if (e.target.classList.contains('sj')) {
    updateStats();
  }
})

// 页面初始化时执行一次统计,加载默认状态的数值
updateStats();
</script>

核心问题实现说明

1. 动态输入框总数量统计

给所有用于数值输入的输入框(包括初始渲染、后续动态新增的)统一加上相同标识类名sj,需要统计数量时,直接调用document.querySelectorAll('#box .sj')获取匹配的DOM集合,集合的length属性就是当前输入框的实时总数量,不受增删操作影响。

原代码的核心问题就是新增的输入框没有加和初始输入框一致的sj类名,导致无法被统一选中统计。

2. 所有输入值获取与平均值计算

  • 遍历上述拿到的所有输入框DOM集合,逐个取出输入值,转成数值类型后过滤掉空内容、非数字的非法输入
  • 对合法输入值做累加,同时统计有效输入的个数
  • 有效输入个数为0时直接返回0,避免除以0的报错;有有效输入时用累加和除以有效个数得到平均值,可按需调整保留的小数位数
  • 统计函数在新增输入框、删除输入框、输入框内容变化三个时机触发,保证统计结果实时同步

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:09:18