dimplejs条形图在Chrome中失败

时间:2014-04-08 11:30:31

标签: javascript jquery google-chrome firefox dimple.js

函数(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"},{"da‌​te":"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>

1 个答案:

答案 0 :(得分:0)

我认为这是你第三行的拼写错误。尝试将其更改为:

data = jQuery.parseJSON(data);

这可以解决您的问题吗?

我只是在小提琴中做了这个改变,在Chrome中似乎没问题:

http://jsfiddle.net/Ra2xS/

编辑:使用新信息,问题是数据数组中的空值。这是一个复制问题的小提琴:

http://jsfiddle.net/Ra2xS/6/

这可以通过删除空值来解决:

while (i < data.length) {
    if (data[i] === null) {
        data.pop(i);
    } else {
        i += 1;
    }
}

请参阅此处的小提琴:http://jsfiddle.net/Ra2xS/5/