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>

问题是当我单击 a 按钮时,它会不断添加系列

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

这让我感到困惑,我认为这是错误的..我希望在单击 a 时显示 3 个数据。但是它不断添加数据...

在 jfiddle 中,您可以看到当我单击按钮时它会不断添加数据。当我只希望它显示我给每个按钮的数据时.. http://jsfiddle.net/Qkzx6/9/

4

1 回答 1

3

ifs 并不涵盖所有机会:例如,如果您有 B(一个系列的图表)并且您按 A,您的第一个将if不会触发(length不是 2 或更多),而您的另一个则remove删除第二个系列(series为零-基于); 如果您从 C(有两个系列的图表)到 A,您的第一个if将再次删除第二个系列,然后再添加一个,然后再次删除第二个,依此类推。

remove只需删除每个内部的所有单独调用,然后在删除所有系列的第一个之前if放置一个while块。if像这样:

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

你的 jsFiddle在这里更正了。

于 2013-07-03T09:33:42.083 回答