google-visualization - 谷歌图表“未捕获(承诺)错误:列索引 3 无效。应该是 [0-3] 范围内的整数。”
问题描述
在将其标记为重复之前,请注意其他人正在询问错误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)
调用并使用了 bog-standard for (var h = 0; h < data.headers.length; h++)
。虽然更冗长,有更多的错别字空间,但它更加标准化和可预测。
我仍然对 GoogleCharts NumberFormatter 有疑问,但这是另一轮研究和问题,而不是这一轮。
解决方案
使用 --> ... 确保您传递的是数字 ( 3
),
而不是字符串 ( '3'
)parseInt
例如
formatter.format(googleData, parseInt(h)); // <-- here
推荐阅读
- sql - 在SQL中汇总列值时如何将列中的不同字段分组?
- c# - 如何在 C# 中从 Powershell 脚本读取 Write-Host 输出
- google-apps-script - 无法使用参数((类))调用重载的构造函数 setValue - Gmail 卡添加
- react-native - react-native 中可用时如何渲染新图像
- javascript - 不要同时运行两个计时器
- ruby-on-rails - 在生产环境中使用 Capistrano 的 Rails 多环境凭据:如何设置?
- python - 如何在 keras 中生成可变大小的距离矩阵?
- c# - CustomUI Ribbon.xml onLoad 事件仅在启动时触发一次
- spring - 如何获取分页的总页码
- java - 在eclipse中用maven构建不会将本地jar的内容包含到可执行jar中