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

如何使用JavaScript/jQuery获取多行列input和select值并组装为数组

实现方案

核心逻辑为提前提取表头字段,遍历表格所有行逐行匹配单元格控件值组装成目标数组,天然兼容动态新增的同结构行,无需修改逻辑即可自动识别新增行数据。

原生JavaScript实现

// 提前提取表头字段
const headers = Array.from(document.querySelectorAll('thead th')).map(th => th.textContent.trim());

// 监听提交按钮点击
document.getElementById('onSubmit').addEventListener('click', function(e) {
  // 阻止表单默认提交跳转行为
  e.preventDefault();
  const data = [];

  // 遍历tbody下所有行,含动态新增行
  document.querySelectorAll('tbody tr').forEach(row => {
    const rowItem = {};
    const cells = row.querySelectorAll('td');
    
    cells.forEach((cell, index) => {
      // 匹配单元格内的控件,第一列为select,其余为number输入框
      const control = cell.querySelector('select, input[type="number"]');
      rowItem[headers[index]] = control.value;
      // 若需要取select的展示文本而非value值,替换上一行为:
      // rowItem[headers[index]] = control.tagName === 'SELECT' ? control.options[control.selectedIndex].text : control.value;
    });

    data.push(rowItem);
  });

  // 输出最终结构,可自行调整后续处理逻辑
  console.log(data);
});

jQuery实现

// 监听提交按钮点击
$('#onSubmit').on('click', function(e) {
  e.preventDefault();
  // 提取表头字段
  const headers = $('thead th').map((_, th) => $(th).text().trim()).get();

  // 遍历所有行组装数据
  const data = $('tbody tr').map((_, row) => {
    const rowItem = {};
    $(row).find('td').each((index, cell) => {
      const control = $(cell).find('select, input[type="number"]');
      rowItem[headers[index]] = control.val();
      // 若需要取select的展示文本而非value值,替换上一行为:
      // rowItem[headers[index]] = control.is('select') ? control.find('option:selected').text() : control.val();
    });
    return rowItem;
  }).get();

  // 输出最终结构
  console.log(data);
});

注意事项

  • 原HTML中第二列输入框设置了固定id check,动态新增行时建议删除该固定id,避免页面id重复冲突
  • 若需要对输入值做类型转换(比如把number输入框的字符串值转为数字),可以在赋值时加一层Number(control.value)处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:54:01