图表联动

要求:点击图表在下方表格的相应数据项中可以有突出显示。

实现方法:为统计图添加点击事件,点击统计图中数据,触发事件,先获取table tbody tr下的所有td,去掉之前标记的success状态,比较第一行第一个td的值是否和X轴值一样,一样则设置success状态,跳到指定id位置。不一样则进行下一个比较。

为了使success状态时,表格能突出显示,需要为表格的success状态设置不一样的样式,在表格处于非success状态时,取消突出显示的样式。

图表联动
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>echarts-多柱子柱状图</title>
      <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <style>
        body, html {
            width: 100%;
            height: 100%;
        }
        .section {
            width: 915px;
            border: 1px solid #ccc;
        }
        #barsDemo {
            width: 100%;
            height: 400px;
        }
    </style>
</head>
<body>

<div class="section">
    <div id="barsDemo"></div>
</div>
<table id="table" class="table table-bordered table-hover">
    <thead>
            <tr>
                <th>Subject</th>
                <th>x</th>
                <th>y</th>
                <th>z</th>
         
            </tr>
        </thead>
        <tbody id="tbody">
            <tr id="tr1">
                <td>huaxue</td>
                <td>11</td>
                <td>12</td>
                <td>13</td>
                
            </tr>
            <tr id="tr2">
                <td>Math</td>
                <td>21</td>
                <td>22</td>
                <td>23</td>
            </tr>
            <tr id="tr3">
                <td>dili</td>
                <td>31</td>
                <td>32</td>
                <td>33</td>
            </tr>
        </tbody>
</table>
<script src="js/jquery-1.12.3.min.js"></script>
<script src="js/echarts.js"></script>
 <script>
    $(function () {
        initData();
    });

    //生成数据
    function initData() {
        var legendData = ['x', 'y','z'];
        var bgColorList = ['#FBB730', '#31BDF2','#6197fb'];
        var axisLabel = ['huaxue','Math', 'dili'];
        var seriesValue = [];

        for (var i = 0; i < legendData.length; i++) {
            var arrData = [];
            var seriesDataVal = null;
            for (var j = 0; j < axisLabel.length; j++) {
                arrData.push(Math.floor(Math.random() * 100));
            }
            seriesDataVal = {
                barWidth: 10,//柱状条宽度
                name:legendData[i],
                type:'bar',
                itemStyle: {
                    normal: {
                        show: true,//鼠标悬停时显示label数据
                        barBorderRadius: [10, 10, 10, 10],//柱形图圆角,初始化效果
                         color: bgColorList[i]
                    }
                },
                label: {
                    normal: {
                        show: true, //显示数据
                        position: 'top'//显示数据位置 'top/right/left/insideLeft/insideRight/insideTop/insideBottom'
                    }
                } ,
                data:arrData
            };
            seriesValue.push(seriesDataVal);
        }

        buildChart(legendData, axisLabel, seriesValue);

    }

    //生成Echarts图形
    function buildChart(legendData, axisLabel, seriesValue) {
        var chart = document.getElementById('barsDemo');
        var echart = echarts.init(chart);
        var option = {
            title: {
                text: "学科兴趣倾向分析",//正标题
                x: "center", //标题水平方向位置
                y: "0", //标题竖直方向位置
                textStyle: {
                    fontSize: 18,
                    fontWeight: 'normal',
                    color: '#666'
                }
            },
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'shadow'//阴影,若需要为直线,则值为'line'
                }
            },
            toolbox: {
                show: true,
                feature: {
                    saveAsImage: {show: true}
                }
            },
            legend: {
                data: legendData,
                y: 'bottom'//图例说明文字设置

            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '10%',
                top:'10%',
                containLabel: true
            },
            xAxis: [{
                min: 0,
                type: 'category', //纵向柱状图,若需要为横向,则此处值为'value', 下面 yAxis 的type值为'category'
                data: axisLabel
            }],
            yAxis: [{
                min: 0,
                type: 'value',
                splitArea: {show: false}
            }],
            label: {
                normal: { //显示bar数据
                    show: true,
                    position: 'top'
                }
            },
            series: seriesValue
        };

        echart.setOption(option);
        //
        echart.on('click',function (params) {
            alert("点击事件触发");
            // 获取table下所有的tr
            let trs = $("#table tbody tr");
            for (let i = 0;i<trs.length;i++){
                // 获取tr下所有的td
                let tds = trs.eq(i).find("td");
                // 先把之前的标记的success去掉
                $("#table tbody tr").eq(i).removeClass('success');
                // 如果点击图示的名字和table下的某一个行的第一个td的值一样
                if (params.name == tds.eq(0).text()){
                    //设置success状态
                    alert(11);
                    $("#table tbody tr").eq(i).addClass('success');
                    // 跳转到页面指定的id位置
                    $("html,body").animate({scrollTop:$("#table tbody tr").eq(i).offset().top},1000);
                }
            }
        });
    }
        //鼠标落在tr上使显示悬浮
        $("#table tbody").find("tr").on("mouseenter",function () {
            // 获得当前匹配元素的个数
            let row = $(this).prevAll().length;
            // 获得当前tr下td的名字
            let name = $("#table tbody").find("tr").eq(row).find("td").eq(0).text();
            // 设置浮动
            echart.dispatchAction({ type: 'showTip',seriesIndex: 0, name:name});//选中高亮
        });
        // 当鼠标移开tr时候取消浮动
        $("#table tbody").find("tr").on("mouseleave",function () {
            // 获得当前匹配元素的个数
            let row = $(this).prevAll().length;
            // 获得当前tr下td的名字
            let name = $("#table tbody").find("tr").eq(row).find("td").eq(0).text();
            // 设置浮动
            echart.dispatchAction({ type: 'hideTip', name:name});//选中高亮
        });
  
    
</script>
</body>
</html>
View Code

 

上一篇:Ambari编译


下一篇:autojs,按键精灵等辅助,抢红包代码分享(真实可运行)