在将其标记为重复之前,请注意其他人正在询问错误Invalid column index undefined. ...
或Invalid column index 5. Should be an integer in the range [0-4].
,但没有。我的是“ 3应该是[0-3]范围内的整数”。另外,该表也可以在没有formatter.format()
行的情况下工作(只是没有格式)。
google.charts.load('current', {'packages':[data.chartType.toLowerCase()]});
google.charts.setOnLoadCallback(function(){
var googleData = new google.visualization.DataTable();
for (var h in data.headers) {
googleData.addColumn(data.headers[h].type, data.headers[h].html);
if (data.headers[h].format) {
var formatter = new google.visualization.NumberFormat(data.headers[h].format);
console.log(data.headers[h].format);
formatter.format(googleData, h); // Errors Here
}
}
/* ... Add Rows ... Draw Chart ... */
}
有问题的标题如下:
header[3] = {
"html": "Total Amount",
"source": "total_amount",
"type": "number",
"format": {
"negativeColor": "#F05840", //orange
"negativeParens": true,
"pattern": "#,###",
"prefix": "$",
"suffix": "",
}
}
我不知道为什么会出错。
请原谅我在这里输入的任何错字,我必须手动编辑间距并在粘贴代码到这里后删除我公司的特定信息。
WhiteHat是正确的,因为我的h
变量是字符串而不是整数,调用parseInt
确实消除了该错误。但是,我没有在格式化程序上调用parseInt
,也没有在其他任何地方调用它,而是摆脱了for (var h in data.headers)
的调用,而使用了沼泽标准for (var h = 0; h < data.headers.length; h++)
。尽管更冗长,而且可能有更多的错别字,但它更加标准化和可预测。
GoogleCharts NumberFormatter仍然存在问题,但这是另一轮研究和问题,而不是这个。
答案 0 :(得分:1)
确保您要传递数字(3
),
而不是字符串('3'
),
通过使用-> parseInt
...
例如
formatter.format(googleData, parseInt(h)); // <-- here