2016-10-14 4 views
0

Ich versuche, das gleiche für Donut (Bearbeitung der Donut-Daten programmgesteuert), aber der Code würde nur nicht für mich arbeiten, obwohl die Syntax scheint hier strackforward.Highcharts.js Donut-Daten programmatisch va JS bearbeiten

Mein Ziel ist es, den Datenpunkt im Donut zu finden, der dem gegebenen x-Achsenwert entspricht, und den Wert auf 10 zu setzen. Irgendwelche Ideen dazu?

Hier ist die 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 
    }); 

Antwort

1

Eigentlich sind Sie für einen Punkt durch seinen Namen suchen, nicht dessen x-Wert, da x Wert eine Zahl ist, Name ist eine Zeichenfolge (für kategorisierte Daten dort natürliche Abbildung ist zwischen diesen beiden).

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

Beispiel: http://jsfiddle.net/caLv5d6x/3/

Die obige Lösung geht davon aus, dass Sie Punkte haben, die ihren Namen eindeutig sind - aber es muss nicht so sein. eine kleine Anpassung genügt:

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

Beispiel:

http://jsfiddle.net/caLv5d6x/4/
Verwandte Themen