作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 Google Timeline chart并想通过单击城市名称来加载城市的一些详细信息,但不知道如何执行此操作。
<div id="cityData">
<!-- city information display hear after ajax success -->
</div>
<div id="timeline" style="height: 180px;"></div>
google.charts.load('current', {'packages':['timeline']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var container = document.getElementById('timeline');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'President' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });
dataTable.addRows([
[ 'Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
[ 'Adams', new Date(1797, 2, 4), new Date(1801, 2, 4) ],
[ 'Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]);
chart.draw(dataTable);
}
fiddle :https://jsfiddle.net/whaqcfnx/
谢谢
最佳答案
您可以为图表生成的text
标签添加一个事件监听器
text
元素有一个属性为 'text-anchor'
该属性的行标签值为 'end'
只需要等待'ready'
事件触发
请参阅以下工作片段...
google.charts.load('current', {
packages: ['timeline'],
callback: function () {
var container = document.getElementById('timeline');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'President' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });
dataTable.addRows([
[ 'Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
[ 'Adams', new Date(1797, 2, 4), new Date(1801, 2, 4) ],
[ 'Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]);
google.visualization.events.addListener(chart, 'ready', function () {
var rowLabels = container.getElementsByTagName('text');
Array.prototype.forEach.call(rowLabels, function (label) {
if (label.getAttribute('text-anchor') === 'end') {
label.addEventListener('click', displayDetails, false);
}
});
});
function displayDetails(sender) {
document.getElementById('cityData').innerHTML = 'City Data for: ' + sender.target.innerHTML;
}
chart.draw(dataTable);
}
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="timeline"></div>
<div id="cityData"></div>
关于javascript - 如何在谷歌时间线图表中加载有关点击事件的一些信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41180505/
我是一名优秀的程序员,十分优秀!