Javascript 将单击事件添加到图表js中水平条形图的Y轴标签
我有一个水平条形图,显示“具有登录计数的用户”。当按下用户名时,我需要转到该用户的个人资料页面。但是,当我放置标记时,如何在y轴标签中放置链接。它看起来不是HTML格式。是否可以在y轴标签中插入链接?如何绑定单击y轴标签?我使用的是图表JS2.7.1。 我当前的代码和我尝试的代码如下Javascript 将单击事件添加到图表js中水平条形图的Y轴标签,javascript,chart.js,Javascript,Chart.js,我有一个水平条形图,显示“具有登录计数的用户”。当按下用户名时,我需要转到该用户的个人资料页面。但是,当我放置标记时,如何在y轴标签中放置链接。它看起来不是HTML格式。是否可以在y轴标签中插入链接?如何绑定单击y轴标签?我使用的是图表JS2.7.1。 我当前的代码和我尝试的代码如下 <canvas id="chartBar1"></canvas> <script type="text/javascript"> var ctx = document.getE
<canvas id="chartBar1"></canvas>
<script type="text/javascript">
var ctx = document.getElementById('chartBar1').getContext('2d');
new Chart(ctx, {
type: 'horizontalBar',
data: {
labels: ["Gonzelo", "Vikram", "Rahaab", "philip", "mark", "juda"],
datasets: [{
label: '# of breaches',
data: [7,2.3,25,28,35],
backgroundColor: '#27AAC8'
}]
},
options: {
title:{
display: true,
text: 'Count for Today'
},
legend: {
display: false,
labels: {
display: false
}
},
scales: {
yAxes: [{
ticks: {
beginAtZero:true,
fontSize: 10,
max: 80
}
}],
xAxes: [{
ticks: {
beginAtZero:true,
fontSize: 11
}
}]
}
}
});
</script>
var ctx=document.getElementById('chartBar1').getContext('2d');
新图表(ctx{
键入:“水平线”,
数据:{
标签:[“Gonzelo”、“Vikram”、“Rahaab”、“philip”、“mark”、“juda”],
数据集:[{
标签:“#违规行为”,
数据:[7,2.3,25,28,35],
背景颜色:“#27AAC8”
}]
},
选项:{
标题:{
显示:对,
文字:“计算今天”
},
图例:{
显示:假,
标签:{
显示:假
}
},
比例:{
雅克斯:[{
滴答声:{
贝吉纳泽罗:是的,
尺寸:10,
最高:80
}
}],
xAxes:[{
滴答声:{
贝吉纳泽罗:是的,
尺寸:11
}
}]
}
}
});
我尝试过的代码通过添加onclick选项在X轴上工作,但我需要让它在y轴标签上工作
onClick: function(e, data) {
var ctx = $("#chartBar1")[0].getContext("2d");
var base = that.chart.chartArea.bottom;
var height = that.chart.chart.height;
var width = that.chart.chart.scales['x-axis-0'].width;
var offset = $('#chartBar1').offset().top - $(window).scrollTop();
if(e.pageY > base + offset){
var count = that.chart.scales['x-axis-0'].ticks.length;
var padding_left = that.chart.scales['x-axis-0'].paddingLeft;
var padding_right = that.chart.scales['x-axis-0'].paddingRight;
var xwidth = (width-padding_left-padding_right)/count;
// don't call for padding areas
var bar_index = (e.offsetX - padding_left - that.chart.scales['y-axis-0'].width) / xwidth;
if(bar_index > 0 & bar_index < count){
bar_index = Math.floor(bar_index);
console.log(label_id_array[bar_index]);
var link = '<%= admin_path %>/'+label_id_array[bar_index];
window.open(
link);
}
}
}
onClick:函数(e,数据){
var ctx=$(“#chartBar1”)[0].getContext(“2d”);
var base=that.chart.chartArea.bottom;
var height=that.chart.chart.height;
var width=that.chart.chart.scales['x-axis-0'].width;
var offset=$('#chartBar1').offset().top-$(window.scrollTop();
如果(如pageY>base+offset){
var count=that.chart.scales['x-axis-0'].ticks.length;
var padding_left=该.chart.scales['x-axis-0'].padding left;
var padding_right=that.chart.scales['x-axis-0'].paddingRight;
var xwidth=(宽度-填充\左-填充\右)/计数;
//不要要求填充区域
var bar_index=(e.offsetX-padding_left-that.chart.scales['y-axis-0'].width)/xwidth;
如果(条形索引>0&条形索引<计数){
bar_指数=数学楼层(bar_指数);
log(label_id_数组[bar_索引]);
var link='/'+标签id数组[bar_索引];
打开窗户(
链接);
}
}
}
这里label_id_array是一个用户id数组