如何为sum_row_qty函数添加判定条件,仅当表格存在指定列时求和?
解决表格无size_qty列时qty被覆盖为0的问题
你的问题核心是:当表格里没有.size_qty类的元素时,函数依然会把.qty的数值设为0,而不是跳过计算。只需要在单行处理逻辑里加一个判断——先检查当前行有没有.size_qty元素,没有就直接终止该行的操作即可。
修改后的代码如下:
function sum_row_qty(el) { if (el) { let parent = el.closest("tr"); // 先获取当前行所有的size_qty输入框 const sizeQtyInputs = parent.querySelectorAll('.size_qty'); // 如果当前行没有任何size_qty元素,直接返回,不修改qty的值 if (sizeQtyInputs.length === 0) { return; } let rowTotal = 0; sizeQtyInputs.forEach(function(e) { // 处理空值或非数字输入,避免总和变成NaN rowTotal += parseFloat(e.value) || 0; }); parent.querySelector('.qty').value = rowTotal; } else { document.querySelectorAll("#tableRows > tr > td:first-child input").forEach(sum_row_qty); } }
关键修改说明:
- 新增
sizeQtyInputs.length === 0的判断:如果当前行找不到任何.size_qty元素,直接用return结束当前函数调用,不会执行后续的赋值操作,自然也就不会把qty改成0了。 - 补充
parseFloat(e.value) || 0:如果某个.size_qty输入框是空的或者输入了非数字内容,parseFloat会返回NaN,用|| 0可以把这种情况转为0,避免最终的总和变成无效的NaN。
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

