我能够反转高图表中过滤器的行为,以便单击系列名称,向下过滤,而不是删除数据。
这是我用来做的代码。
events: {
legendItemClick: function(event) {
if (!this.visible)
return true;
var seriesIndex = this.index;
var series = this.chart.series;
for (var i = 0; i < series.length; i++)
{
if (series[i].index != seriesIndex)
{
series[i].visible ? series[i].hide() : series[i].show();
}
}
return false;
}
},
现在,每次有人单击过滤器时,我想将该过滤器的名称发送到我的 php 文件以进行进一步处理,但无法这样做。这是我尝试过的
events: {
legendItemClick: function(event) {
if (!this.visible)
return true;
var seriesIndex = this.index;
var series = this.chart.series;
for (var i = 0; i < series.length; i++)
{
if (series[i].index != seriesIndex)
{
series[i].visible ? series[i].hide() : series[i].show();
}
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
}
}
xmlhttp.open("GET","/s.php?o="+series,true);
xmlhttp.send();
return false;
}
},
我认为这可能是没有正确调用过滤器名称的问题?上面写着系列,我试过了
seriesIndex、series、event.point.index.name 以及许多其他没有运气的人。我的问题是我在该事件括号中使用的当前代码是否正确,以及 B,如果我使用正确的字符串/变量来调用过滤器/索引的名称。
更正* - 使用“seriesIndex”作为变量,在一定程度上起作用,它将发送 0,1,2(对应于过滤器的 id),但仅当它是单击的第一个选择时。如果单击第二个过滤器,它将停止将自身发送到 php 文件。
/// 感谢 SteveP。
调用 php 的函数必须在第一个 if 语句之前,像这样
events: {
legendItemClick: function(event) {
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
}
}
xmlhttp.open("GET","/s.php?u="+this.name,true);
xmlhttp.send();
if (!this.visible)
return true;
var seriesIndex = this.index;
var series = this.chart.series;
for (var i = 0; i < series.length; i++)
{
if (series[i].index != seriesIndex)
{
series[i].visible ? series[i].hide() : series[i].show();
}
}
return false;
}
},