0

我能够反转高图表中过滤器的行为,以便单击系列名称,向下过滤,而不是删除数据。

这是我用来做的代码。

                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;
        }


    },
4

1 回答 1

1

如果要发送系列名称,请尝试:

this.name

因为'this'应该是选定的系列,所以this.name应该是它的名字,假设你在你的图表中给了它一个。

于 2013-04-03T15:31:33.677 回答