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 に対応) が送信されますが、最初の選択がクリックされた場合のみです。クリックされた 2 番目のフィルタである場合、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 に答える