函数(barplot())在按钮单击(OnClick)和Ajax请求的最新Firefox版本中完美运行。但是,在Chrome中由于常见的JavaScript错误而失败:未捕获的TypeError:无法读取未定义的属性“日期”。我完全卡住了。有什么想法吗?
<script>
var dim = {"width":590,"height":450}; //chart container width
var data = '[{"date":"01-02-2010","cost":"9.7862"},{"date":"01-03-2010","cost":"9.915"},{"date":"01-04-2010","cost":"10.2634"},null,null,null,null,null]';
date = jQuery.parseJSON(data);
chartutil.barplot("#chartcont",dim,data);
function barplot(id,dim,data)
{
keys = Object.keys(data[0]);
var xcord = keys[0];
var ycord = keys[1];
var svg = dimple.newSvg(id, dim.width, dim.height);
var myChart = new dimple.chart(svg,data);
myChart.setBounds(60, 30, 505, 305);
var x = myChart.addCategoryAxis("x", xcord);
x.addOrderRule(xcord);
x.showGridlines = true;
var y = myChart.addMeasureAxis("y", ycord);
y.showGridlines = true;
var s = myChart.addSeries(null, dimple.plot.bar);
var s1 = myChart.addSeries(null, dimple.plot.line);
s1.lineWeight = 3;
s1.lineMarkers = true;
myChart.draw(1500);
}//--end function
</script>
答案 0 :(得分:0)
我认为这是你第三行的拼写错误。尝试将其更改为:
data = jQuery.parseJSON(data);
这可以解决您的问题吗?
我只是在小提琴中做了这个改变,在Chrome中似乎没问题:
编辑:使用新信息,问题是数据数组中的空值。这是一个复制问题的小提琴:
这可以通过删除空值来解决:
while (i < data.length) {
if (data[i] === null) {
data.pop(i);
} else {
i += 1;
}
}
请参阅此处的小提琴:http://jsfiddle.net/Ra2xS/5/