以编程方式编辑Highcharts.js donut数据va JS

时间:2016-10-14 22:54:00

标签: javascript highcharts

我正在尝试为甜甜圈做同样的事情(以编程方式编辑甜甜圈数据),但代码对我来说不起作用,尽管这里的语法似乎很简单。

我的目标是在甜甜圈中找到与给定的x轴值对应的数据点,并将值设置为10.对此有何想法?

这是JSFIddle

btnEdit.click(function() {
    // chart.series[0].data[0].update(x += 10); - this code doesn't work
    var x = prompt("Please enter your name");
    // find the data point that corresponds to x
    // Set it to 10
  });

1 个答案:

答案 0 :(得分:1)

实际上,你正在寻找一个名称,而不是它的x值,因为x值是一个数字,name是一个字符串(对于分类数据,这两者之间有自然映射)。

btnEdit.click(function() {
// chart.series[0].data[0].update(x += 10); - this code doesn't work
var i = 0,
    points = chart.series[0].data,
    len = points.length,
    x = prompt("Please enter your name"),
    point;

for (; i < len; i++) {
    point = points[i];
    if (point.name === x) {
      point.update({
        y: 10
      });
      break;
    }
}

// find the data point that corresponds to x
// Set it to 10
});

示例:http://jsfiddle.net/caLv5d6x/3/

上述解决方案假设您的名字是独一无二的 - 但它并不一定是这样的。 一个小小的调整就足够了:

 btnEdit.click(function() {
// chart.series[0].data[0].update(x += 10); - this code doesn't work
  var x = prompt("Please enter your name");

chart.series[0].data.forEach(function (point) {
    if (point.name === x) {
    point.update({
        y: 10
    }, false, false);
  }
});

chart.redraw();
// find the data point that corresponds to x
// Set it to 10
});

示例:http://jsfiddle.net/caLv5d6x/4/