使用jQuery遍历表格行列计算学生平均分出现累加错误如何解决
问题原因
- 原有代码会选中页面全部
.score类的成绩单元格统一求和,计算出的总分是所有学生所有科目的成绩总和,同时会给所有.average-score单元格设置相同的平均值,无法和单个学生的成绩对应。
修正后代码
$("#btn-average").click(function() { // 遍历每一行学生记录 $(".student-info").each(function() { let sum = 0; // 仅统计当前行内的成绩 $(this).find(".score").each(function() { const value = parseFloat($(this).text()); sum += isNaN(value) ? 0 : value; // 兼容非数字成绩的异常场景 }); const average = sum / 3; // 仅修改当前行的平均分单元格 $(this).find(".average-score").text(average.toFixed(1)); }); });
调整说明
- 外层遍历所有学生行
.student-info,为每个学生单独计算平均分 - 内层使用
find()方法限定仅查询当前行内的成绩,不会跨行统计其他学生的分数 - 新增
isNaN()判断,避免成绩为空/非数字时出现NaN的计算错误 - 每个学生的平均分仅写入当前行的
.average-score单元格,不会覆盖其他学生的结果
额外提示:你现有表格结构中给成绩、平均分单元格设置的id会在新增学生后出现id重复问题,不符合HTML规范,后续可以删除这类重复id,仅用class做选择器即可。
内容的提问来源于stack exchange,提问作者duong-manh-dung
相关产品推荐
相关产品推荐

