如何让Highcharts不显示HTML表格中的最后总计行
问题
我正在使用Highcharts从DataTable中提取数据,当前Highcharts可正常运行,但表格最后一行是“Total(总计)”行,我希望不在图表中展示该行,请问有实现方法吗?
解决方案
有两种简单的实现方式,可根据实际场景选择:
方法一:精准跳过“Total”行
在遍历表格行数据时,判断当前行第一列的内容是否为Total,如果是则直接跳过该行,不将其加入图表数据源。
修改后的完整JS代码:
$(document).ready(function() { var allSeriesData = []; var categories = []; var table = $("#example1").DataTable({ initComplete: function(settings, json) { let api = new $.fn.dataTable.Api(settings); // 获取X轴分类(表格表头) var headers = api.columns().header().toArray(); headers.forEach(function(heading, index) { if (index > 0 && index < headers.length ) { categories.push($(heading).html()); } }); // 获取表格行数据并处理 let rows = api.rows().data().toArray(); rows.forEach(function(row) { // 跳过第一列为Total的行 if (row[0] === 'Total') { return; } group = { name: '', data: [] }; row.forEach(function(cell, idx) { if (idx == 0) { group.name = cell; } else if (idx < row.length ) { group.data.push(parseFloat(cell.replace(/,/g, ''))); } }); allSeriesData.push(group); }); } }); var myChart = Highcharts.chart("container", { chart: { type: "column" }, title: { text: "Test Data" }, xAxis: { categories: categories }, series: allSeriesData }); });
方法二:排除最后一行(适合Total固定在末尾的场景)
如果Total行始终是表格最后一行,可直接截取行数组,去掉最后一个元素后再遍历处理:
只需修改行数据获取的代码片段:
// 获取表格行数据并排除最后一行 let rows = api.rows().data().toArray().slice(0, -1); rows.forEach(function(row) { group = { name: '', data: [] }; row.forEach(function(cell, idx) { if (idx == 0) { group.name = cell; } else if (idx < row.length ) { group.data.push(parseFloat(cell.replace(/,/g, ''))); } }); allSeriesData.push(group); });
方法对比
- 方法一适用性更广:无论Total行在表格中的位置如何,只要第一列内容是
Total就能准确过滤。 - 方法二更简洁:适合Total行固定在最后的场景,代码改动量更小。
内容的提问来源于stack exchange,提问作者magicsinger
相关产品推荐
相关产品推荐

