我一直在做一个志愿者大学网站工作的脚本。
除瓦数和学校外,请忽略所有参数。这些是使用 json_encode()转换为数组的SQL结果集。我相信,结果集将字符串作为值,因此wattages
和schools
都应该是字符串数组。
我想要做的是为饼图输入我自己的data
,在本例中为 mySeries ,我在开始时构建/填充并放置为{{1}以后。
data
事情是,上述情况不会奏效。由于我没有使用环境(用记事本++编写并在我的apache web服务器上进行测试,通过结果)我手动将有问题的行标记为function createPieChartGradient(data,title,xlabel,ylabel,type,step,div_id,wattages,schools){
var float_watt = new Array();
for(var index = 0; index < wattages.length; index++)
{
float_watt[index] = parseFloat(wattages[index]).toFixed(2);
}
var mySeries = []; //Hopefully this creates a [String, number] array that can be used as Data.
for (var i = 0; i < float_watt.length; i++) {
mySeries.push([schools[i], float_watt[i]]);
}
var options = {
chart: {
renderTo: 'graph',
zoomType: 'x',
defaultSeriesType: type
},
title: {
text: 'Consumption Percentage of IHU Schools, Last 7 days'
},
tooltip: {
//pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
xAxis: {
categories: [],
tickPixelInterval: 150,
// maxZoom: 20 * 1000,
title: {
style: {
fontSize: '14px'
},
text: xlabel
},
labels: {
rotation: -45,
step: step,
align: 'right'//,
// step: temp
}
},
yAxis: {
title: {
style: {
fontSize: '14px'
},
text: ylabel
},
labels: {
align: 'right',
formatter: function() {
return parseFloat(this.value).toFixed(2);
}
},
min: 0
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'center',
floating: true,
shadow: true
},
series: [{
type: 'pie',
name: 'Consumption Percentage',
data: mySeries //Problematic line.
}] //Faculty with the smallest wattage -> Green.
}; //end of var options{} //Next: -> Yellow.
//Last -> Red.
//Draw the chart.
var chart = new Highcharts.Chart(options); //TODO: Change colours.
document.write("FINISHED");
}
。
知道为什么会这样吗?它们不是同一类型的数组data: mySeries
吗?
此外,是否有任何环境可以帮助我调试JavaScript程序?我真的很想知道这种情况,我更倾向于让IDE告诉我什么是错的,或者至少指出我正确的方向。
答案 0 :(得分:1)
你看到你在哪里打电话给“toFixed”?我们来做一个小实验:
var wattages = [2.0, 3.0];
var float_watt = new Array();
for(var index = 0; index < wattages.length; index++)
{
float_watt[index] = parseFloat(wattages[index]).toFixed(2);
}
console.log(JSON.stringify(float_watt));
输出不是您所期望的:
["2.00", "3.00"]
看看它是如何转换为字符串的?如果您删除“toFixed”并让格式化程序完成其工作,那么事情就可以了。
修改
以下是修复格式化程序的方法:
plotOptions: {
pie: {
dataLabels: {
formatter: function() {
return parseFloat(this.y).toFixed(2);
}
}
}
},
yLabels格式化程序没有为这个饼干做任何事情。