如何使用JavaScript统计表格中已生成的结果数量?
如何统计表格中已生成的结果数量?
我完全懂你的需求——就是要数一下表格里已经算出结果的行数,只统计数量,不用管结果的具体数值对吧?看你的表格结构,结果都存在那些带disabled属性、name为ResultadoUni的输入框里,那我们可以用这几种简单的JavaScript方法实现:
方法一:通过选择器批量筛选(推荐,支持动态添加行)
这个方法会自动找到所有符合条件的结果输入框,就算后续动态添加表格行也不用改代码,非常灵活:
// 定义统计函数 function contarResultados() { // 选中表格里所有name为ResultadoUni的禁用输入框 const todosResultados = document.querySelectorAll('#example input[name="ResultadoUni"][disabled]'); // 把NodeList转成数组,过滤出有非空值的输入框 const resultadosPreenchidos = Array.from(todosResultados).filter(input => { return input.value.trim() !== ''; // 用trim()排除只有空格的情况 }); // 返回已生成结果的数量 return resultadosPreenchidos.length; }
怎么用?
你可以在计算结果之后调用这个函数,比如在你的calculaResultado函数末尾加上统计逻辑,还可以把结果显示在页面上:
- 先在页面加个显示计数的元素:
<div>已完成结果数量:<span id="contador">0</span></div>
- 写个更新计数的函数,然后在计算结果时调用:
function atualizarContador() { const quantidade = contarResultados(); document.getElementById('contador').textContent = quantidade; } // 修改你的calculaResultado函数,计算完结果后更新计数 function calculaResultado(id) { // 你原来的计算逻辑... // 比如计算完给resultado${id}赋值后: atualizarContador(); // 调用更新计数 }
方法二:按序号循环检查(适合固定序号的输入框)
如果你的结果输入框id都是resultado1、resultado2这种有规律的序号,也可以用循环逐个检查:
function contarResultados() { let contador = 0; let indice = 1; // 循环查找直到找不到对应的输入框 while (true) { const input = document.getElementById(`resultado${indice}`); if (!input) break; // 找不到就退出循环 // 如果输入框有非空值,计数+1 if (input.value.trim() !== '') { contador++; } indice++; } return contador; }
这个方法的好处是逻辑直观,但如果后续动态添加行,需要保证id的序号是连续的,不然会漏统计。
小提示
- 一定要用
trim()过滤掉空格,避免用户不小心输入空格被误统计成有效结果 - 如果你的表格会动态添加行,优先用方法一,
querySelectorAll会自动捕获所有新增的符合条件的输入框
内容的提问来源于stack exchange,提问作者user9864805
相关产品推荐
相关产品推荐

