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

如何用DataTable+Highcharts Pie Chart统计STATUS列值的出现次数

实现DataTables+Highcharts饼图统计STATUS列数据

完整实现代码

HTML结构

<!-- DataTables 样式 -->
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/jquery.dataTables.min.css">
<!-- Highcharts 样式 -->
<link rel="stylesheet" href="https://code.highcharts.com/css/highcharts.css">

<!-- 表格容器 -->
<table id="dataTable" class="display" style="width:100%">
    <thead>
        <tr>
            <th>DATE</th>
            <th>STATUS</th>
            <!-- 其他列根据实际需求添加 -->
        </tr>
    </thead>
    <tbody>
        <!-- 数据行示例 -->
        <tr>
            <td>2024-05-20</td>
            <td>success</td>
        </tr>
        <tr>
            <td>2024-05-20</td>
            <td>success</td>
        </tr>
        <tr>
            <td>2024-05-20</td>
            <td>fail</td>
        </tr>
        <tr>
            <td>2024-05-20</td>
            <td>aborted</td>
        </tr>
        <!-- 更多数据行 -->
    </tbody>
</table>

<!-- 饼图容器 -->
<div id="pieChart" style="height: 400px; margin-top: 20px;"></div>

<!-- 引入依赖脚本 -->
<script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>

JavaScript核心逻辑

$(document).ready(function() {
    // 初始化DataTables
    const table = $('#dataTable').DataTable();

    // 定义统计STATUS数据的函数
    function getStatusStats() {
        // 获取表格中已应用搜索过滤的所有行的STATUS列数据
        const statusData = table.column(1, { search: 'applied' }).data().toArray();
        
        // 初始化统计对象
        const stats = {
            success: 0,
            fail: 0,
            aborted: 0
        };

        // 遍历数据统计次数
        statusData.forEach(status => {
            if (stats.hasOwnProperty(status)) {
                stats[status]++;
            }
        });

        // 转换为Highcharts饼图需要的格式
        return Object.entries(stats).map(([name, y]) => ({ name, y }));
    }

    // 初始化饼图
    const chart = Highcharts.chart('pieChart', {
        chart: {
            type: 'pie'
        },
        title: {
            text: 'STATUS 统计'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b> ({point.y} 次)'
        },
        series: [{
            name: '次数',
            data: getStatusStats()
        }]
    });

    // 监听搜索事件,搜索后更新饼图
    $('#dataTable_filter input').on('keyup change', function() {
        chart.series[0].setData(getStatusStats());
    });
});

关键说明

  • 数据统计逻辑:getStatusStats函数会抓取当前表格中经过搜索过滤的所有行的STATUS数据,精准统计success、fail、aborted的出现次数,并转换成Highcharts饼图兼容的数据格式。
  • 搜索联动:绑定DataTables自带搜索框的事件,每次输入搜索内容(比如今日日期)后,饼图会自动同步更新统计结果,保证图表和表格数据一致。
  • 新手适配:代码结构清晰,注释明确,你只需要替换表格内的实际业务数据(可以通过AJAX加载后端数据,或直接填充静态数据)即可快速复用。

内容的提问来源于stack exchange,提问作者Roger McCarrick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:52