2013-02-01 52 views
1

基本上我有它定義了一個Highchart圖表一些性能對象:如何使用功能更新JavaScript對象

var options = { 
    chart: { 
     renderTo: 'container', 
     type: 'line', 
     marginRight: 130, 
     marginBottom: 25 
    }, 
    title: { 
     text: 'Monthly Average Temperature', 
     x: -20 //center 
    }, 
    subtitle: { 
     text: 'Source: WorldClimate.com', 
     x: -20 
    }, 
    xAxis: { 
     categories: [] 
    }, 
    yAxis: { 
     title: { 
      text: 'Temperature (°C)' 
     }, 
     plotLines: [{ 
      value: 0, 
      width: 1, 
      color: '#808080' 
     }] 
    }, 
    tooltip: { 
     formatter: function() { 
      return '<b>' + this.series.name + '</b><br/>' + this.x + ': ' + this.y + '°C'; 
     } 
    }, 
    legend: { 
     layout: 'vertical', 
     align: 'right', 
     verticalAlign: 'top', 
     x: -10, 
     y: 100, 
     borderWidth: 0 
    }, 
    series: [{ 
     name: 'Tokyo', 
     data: aCosts 
    }] 
}; 

我想更新從文件(AJAX調用)這個對象,像這樣:

$.getJSON(
    "handler.php", 
    function (oJSON) { 
     var sName, 
      sCost, 
      aRow; 
     for (sName in oJSON) { 
      aRow = []; 
      //categories = []; 
      if (oJSON.hasOwnProperty(sName)) { 
       aRow.push(sName); 
       categories.push(sName); 
      } 
      // Create the chart 
      var chart = new Highcharts.Chart(options); 
     } 
    } 
); 

問題是,我無法將新值傳遞給選項,因爲它聲明類別未定義。我試過使用:

options.categories.push(sName) 
options[categories].push(sName) 

而且沒有工作。

如何更新我的選項對象內的類別的值?

回答

5

假設options$.JSON呼叫可見,這應該工作:

options.xAxis.categories.push(sName); 

如果你看看你的options對象的結構,你看,那是categories財產xAxis下方。因此,你應該解決的就是這樣。

0

你只需要先定義類,像這樣:

options.categories = []; 

,那麼你可以把東西放到這個數組。

編輯:您可以將categories: []放置在您的json中,以此開頭。

+0

我沒有看到這些類別屬於您的JSON中的xAxis對象。正如其他人已經指出的那樣,您只需要在xAxis中的正確位置訪問它。 – Hippocrates