1

ラジオボタンをクリックし続けると、シリーズを追加したくないときにシリーズが追加され続けます。

私のコード:

  $(".test").change(function() {
      var value = this.getAttribute("value");
      if (value == 'a') {
          chart.yAxis[0].setTitle({
              text: "data"
          });
          if (chart.series.length >= 3) chart.series[1].remove();
          chart.addSeries({
              name: '2011',
              type: 'column',
              color: '#08F',
              data: [1, 0, 4]
          });
          chart.series[1].remove();
          chart.addSeries({
              name: '2012',
              type: 'column',
              color: '#808000',
              data: [8, 5, 3]
          });
          chart.addSeries({
              name: '2013',
              type: 'column',
              color: '#FFA500',
              data: [8, 1, 2]
          });
      }

ラジオ ボタン:

<input class="test" name="g" type="radio" value="a"> data</input>
<input class="test" name="g" type="radio" value="b"> data1</input>
<input class="test" name="g" type="radio" value="c"> data2</input>

問題は、ボタンをクリックすると、シリーズが追加され続けることです

if (chart.series.length >= 3)
    chart.series[1].remove();

これは私を混乱させ、間違っていると思います.. aをクリックすると、3つのデータが1回表示されるようにします。ただし、データを追加し続けます...

jfiddle では、ボタンをクリックするとデータが追加され続けることがわかります。各ボタンに指定したデータのみを表示したい場合.. http://jsfiddle.net/Qkzx6/9/

4

1 に答える 1

3

s はすべての可能性をカバーするわけではifありません: たとえば、B (1 つの系列を持つチャート) があり、A を押すと、最初の系列は起動ifせず ( length2 つ以上ではありません) remove、2 番目の系列を削除すると (seriesゼロです)ベース); C (2 つのシリーズを含むチャート) から A に移行した場合、1 番目ifは 2 番目のシリーズを再び削除し、次にもう 1 つ追加してから 2 番目を再び削除します。

removeそれぞれの内部への個々の呼び出しをすべて削除し、すべてのシリーズを削除する最初のブロックの前にブロックifを配置するだけです。このような:whileif

while (chart.series.length > 0) {
  chart.series[0].remove(true);
}

あなたの jsFiddle はここで修正されました。

于 2013-07-03T09:33:42.083 に答える