Highcharts Tooltip含日期格式标签时失效问题求助
解决Highcharts中带数字日期格式导致Tooltip失效的问题
这个问题我之前也踩过类似的坑!根源是Highcharts的data模块对表格内容的自动类型推断机制——当你的<th>内容以数字开头(比如2018-Feb),它会默认尝试把这个值解析成日期或数值类型,而不是保留原始的字符串类别,这就导致你在Tooltip的formatter函数里访问this.point.name时,拿不到正确的文本内容,最终Tooltip失效。
下面给你两种亲测有效的解决方案:
方案1:强制指定类别列的类型为字符串
在Highcharts的data配置中添加columns选项,明确告诉解析器第一列(也就是你的日期列)是字符串类型,这样就不会触发错误的类型推断了:
修改后的完整JavaScript代码:
$(document).ready(function() { var data = { table: 'datatable', // 明确指定各列类型,第一列强制为字符串 columns: [ { type: 'string' }, null, // Credit列保持自动推断 null // Debit列保持自动推断 ] }; var chart = { type: 'column' }; var title = { text: 'Credit Debit comparison' }; var yAxis = { allowDecimals: false, title: { text: 'Units' } }; var tooltip = { formatter: function () { return '<b>' + this.series.name + '</b><br/>' + this.point.y + ' ' + this.point.name.toLowerCase(); } }; var credits = { enabled: false }; var json = {}; json.chart = chart; json.title = title; json.data = data; json.yAxis = yAxis; json.credits = credits; json.tooltip = tooltip; $('#container').highcharts(json); });
方案2:修改Tooltip的取值逻辑
如果不想调整数据解析配置,也可以直接修改Tooltip的formatter函数,把this.point.name换成this.x——因为x轴的类别值其实是正确保留的,只是point.name被错误解析了:
修改后的Tooltip部分代码:
var tooltip = { formatter: function () { return '<b>' + this.series.name + '</b><br/>' + this.point.y + ' ' + this.x.toLowerCase(); } };
两种方案都能解决你的问题:方案1更稳妥,能避免后续其他功能因为类型推断出现异常;方案2更简洁,适合快速修复当前问题。
内容的提问来源于stack exchange,提问作者acr




