Google图表“未捕获(承诺)错误:无效的列索引3。应为[0-3]范围内的整数”。

时间:2019-02-26 20:55:23

标签: google-visualization

在将其标记为重复之前,请注意其他人正在询问错误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仍然存在问题,但这是另一轮研究和问题,而不是这个。

1 个答案:

答案 0 :(得分:1)

确保您要传递数字(3),
而不是字符串('3'),
通过使用-> parseInt ...

例如

formatter.format(googleData, parseInt(h));  // <-- here