2010-06-24 116 views
0

我已经构建了一个使用dojox.charting以编程方式构建图表的简单函数。对于如何通过addSeries将它们传递给图表来正确地投射变量,我有点困惑。考虑到这一点:向一个简单的dojo图表添加一个系列

function buildChart(targetDiv){ 
     //grab the destination 
     var bc = dojo.byId(targetDiv); 

     //define the data for the series 
     var testData = [2,4,2,2,2,3,2,10,11,12,8,4]; 
     var string = "2,4,2,2,2,3,2,10,11,12,8,4"; 
     var convertedString = string.split(","); 
     console.log("Variable testData value is " + typeof(testData)); 
     console.log("Variable convertedString value is " + typeof(convertedString)); 

     //build the chart 
     dojo.attr(bc,"style","width:300px;height:200px;"); 
     var chart = new dojox.charting.Chart2D(bc); 
     chart.addPlot("default", {type: "Lines"}); 
     chart.addAxis("x"); 
     chart.addAxis("y", {vertical: true}); 
     //chart.addSeries("Series 1 works fine", testData); 
     chart.addSeries("Series 2 not working", convertedString); 
     chart.render(); 
}//buildChartenter code here 

请注意,testData变量工作正常,但convertedString变量没有。我必须错过一些非常简单的事情。如何在这种情况下投入一个入站字符串变量来工作?

回答

1

是的,很容易:testData是数组数组,而convertedString是字符串数组。

可以将这些字符串转换为数字那样:

var convertedString = dojo.map(string.split(","), parseFloat); 

或者你也可以手动做到这一点:

var convertedString = string.split(","); 
for(var i = 0; i < convertedString.length; ++i){ 
    convertedString[i] = parseFloat(convertedString[i]); 
} 

PS:使用string作为标识符看起来&hellip;错误。

+0

非常好!我明白我现在想念的是什么。我同意,名为“字符串”的变量是令人痛苦的无法想像的。下次我会用更好的标识符(foo!)来举例说明。 感谢您的快速响应,尤金。 – Bruce 2010-06-24 23:40:38

相关问题