Прежде чем пометить это как дубликат, обратите внимание, что другие спрашивают об ошибке 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, но это еще один раунд исследований и вопросов, а не этот.