2010-06-24 2 views
0

Я построил простую функцию, которая программно создает диаграммы с использованием dojox.charting. Я немного озадачен тем, как корректно использовать переменные при передаче их на диаграмму через addSeries. Рассмотрим следующее:Добавление серии к простой диаграмме додзе

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 работает нормально, но переменная convertString этого не делает. Мне нужно пропустить что-то очень простое. Как бы я применил строчную переменную входящего потока в этом случае?

ответ

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