echarts点击事件跳去其他页面,或者是在该区域内展示新内容
(
function ()
{
var RewardData = [
{
reward: '最佳教练',
xdata: ['李牧', '刘旭东', '沈琼', '王健', '鞠根寅', '沈富麟', '吴卫', '薛永业', '杨礼康'],
data: [3, 1, 5, 2, 4, 4, 1, 2, 2]
},
{
reward: 'MVP',
xdata: ['刘泽', '江川', '张哲嘉', 'Edgar', '郑亮', '张利明'],
data: [1, 3, 1, 1, 1, 14]
},
{
reward: '最佳外援',
xdata: ['Yosvany', 'Marouflakrani', 'Leonardo'],
data: [1, 1, 2]
}
];
// 1.实例化对象
var myChart = echarts.init(document.querySelector(".bar .chart"));
// 2.指定配置项和数据
var option = {
color: ['#2f89cf'],
// 提示框组件
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
// 修改图表位置大小
grid: {
left: '0%',
top: '10px',
right: '0%',
bottom: '4%',
containLabel: true
},
// x轴相关配置
xAxis: [{
type: 'category',
data: ['李牧', '刘旭东', '沈琼', '王健', '鞠根寅', '沈富麟', '吴卫', '薛永业', '杨礼康'],
axisTick: {
alignWithLabel: true
},
// 修改刻度标签,相关样式
axisLabel: {
color: "rgba(255,255,255,0.8)",
fontSize: 10
},
// x轴样式不显示
axisLine: {
show: false
}
}],
// y轴相关配置
yAxis: [{
type: 'value',
// 修改刻度标签,相关样式
axisLabel: {
color: "rgba(255,255,255,0.6)",
interval: 0,
fontSize: 12
},
// y轴样式修改
axisLine: {
lineStyle: {
color: "rgba(255,255,255,0.6)",
width: 2
}
},
// y轴分割线的颜色
splitLine: {
lineStyle: {
color: "rgba(255,255,255,0.1)"
}
}
}],
// 系列列表配置
series: [{
name: '直接访问',
type: 'bar',
barWidth: '35%',
// ajax传动态数据
data: [3, 1, 5, 2, 4, 4, 1, 2, 2],
itemStyle: {
// 修改柱子圆角
barBorderRadius: 5
}
}]
};
// 3.把配置项给实例对象
myChart.setOption(option);
// 4.让图表随屏幕自适应
window.addEventListener('resize', function () {
myChart.resize();
})
// 5.点击切换2020 和 2021 的数据
$('.bar h2 a').on('click', function () {
console.log($(this).text())
RewardData.map((item) => {
if (item.reward == $(this).text()) {
option.series[0].data = item.data;
option.series[0].name = item.reward;
option.xAxis[0].data=item.xdata;
}
})
// 选中年份高亮
$('.bar h2 a').removeClass('a-active');
$(this).addClass('a-active');
// 需要重新渲染
myChart.setOption(option);
})
$('.typeList a').on('click',function(){
if($(this).text()=="折线"){
option.series[0].type="line";
}else{
option.series[0].type="bar";
}
// 选中年份高亮
$('.typeList a').removeClass('a-active');
$(this).addClass('a-active');
// 需要重新渲染
myChart.setOption(option);
})
})();
这是对应代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>数据可视化</title>
<link rel="stylesheet" href="css/index.css" />
</head>
<body>
<!-- 头部 -->
<header>
<h1>排球数据可视化</h1>
<div class="show-time"></div>
<script>
var t = null;
t = setTimeout(time, 1000); //开始运行
function time() {
clearTimeout(t); //清除定时器
dt = new Date();
var y = dt.getFullYear();
var mt = dt.getMonth() + 1;
var day = dt.getDate();
var h = dt.getHours(); //获取时
var m = dt.getMinutes(); //获取分
var s = dt.getSeconds(); //获取秒
document.querySelector(".show-time").innerHTML =
"当前时间:" +
y +
"年" +
mt +
"月" +
day +
"日-" +
h +
"时" +
m +
"分" +
s +
"秒";
t = setTimeout(time, 1000); //设定定时器,循环运行
}
</script>
</header>
<!-- 页面主体 -->
<section class="mainbox">
<!-- 左侧盒子 -->
<div class="column">
<div class="panel line">
<h2>男排世界排名</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel bar">
<h2>男排历年得奖情况:
<a class="a-active" href="javascript:;">最佳教练</a>
<a href="javascript:;">MVP</a>
<a href="javascript:;">最佳外援</a>
<div id="main"></div>
<div class="typeList">
<a href="#">折线</a>
<a href="#">柱形</a>
</h2>
<!-- 图表放置盒子 -->
<div class="chart"></div>
<!-- 伪元素绘制盒子下边角 -->
<div class="panel-footer"></div>
</div>
<div class="panel bar3">
<h2>2019女排世界杯得分数据</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
</div>
<!-- 中间盒子 -->
<div class="column">
<!-- 头部 no模块 -->
<div class="no">
<div class="no-hd">
<ul>
<li> 1 </li>
<li>00320</li>
</ul>
</div>
<div class="no-bd">
<ul>
<li>中国排球排名</li>
<li>中国排球总分</li>
</ul>
</div>
</div>
<!-- map模块 -->
<div class="map">
<div class="map1"></div>
<div class="map2"></div>
<div class="map3"></div>
<div class="chart"></div>
</div>
</div>
<!-- 右侧盒子 -->
<div class="column">
<div class="panel line2">
<h2>女排世界排名</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
<div class="panel newbar">
<h2>女排历年得奖情况:
<a class="a-active" href="javascript:;">最佳教练</a>
<a href="javascript:;">MVP</a>
<a href="javascript:;">最佳二传</a>
</h2>
<!-- 图表放置盒子 -->
<div class="chart"></div>
<!-- 伪元素绘制盒子下边角 -->
<div class="panel-footer"></div>
</div>
<div class="panel pie2">
<h2>历年女排家乡统计</h2>
<div class="chart"></div>
<div class="panel-footer"></div>
</div>
</div>
</section>
<script src="js/flexible.js"></script>
<script src="js/echarts.min.js"></script>
<script src="js/jquery.js"></script>
<!-- 引入china.js 完成地图模块 -->
<script src="js/china.js"></script>
<script src="js/index.js"></script>
</body>
</html>
要实现echarts点击横坐标跳转页面,可以使用echarts的事件处理函数和JavaScript的window.location.href属性。
第一,在echarts的option中设置x轴的axisLabel的click事件,例如:
xAxis: {
type: 'category',
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
axisLabel: {
interval: 0,
rotate: 45,
clickable: true, // 设置可点击
formatter: function (value) {
return value;
}
}
}
然后,在echarts的事件处理函数中获取点击的横坐标值,并使用window.location.href属性跳转到相应的页面,例如:
myChart.on('click', function (params) {
if (params.componentType === 'xAxis') { // 判断点击的是否为x轴
var xAxisValue = params.value; // 获取点击的横坐标值
window.location.href = 'http://example.com/' + xAxisValue; // 跳转到相应的页面
}
});
注意,上述代码中的'http://example.com/'应该替换为实际的页面地址。
首先获取到你的echarts dom,给他添加点击事件,当中的params就是你点击的当前的值,params里面有个name,就是你的横坐标,然后根据不同的值,展示不同的数据