如何使用函数更新Javascript对象

时间:2013-02-01 14:27:51

标签: javascript json highcharts getjson

基本上我有一个对象定义了Highchart图表的一些属性:

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) 

没有人工作。

如何更新选项对象中的类别值?

2 个答案:

答案 0 :(得分:5)

假设options调用显示$.JSON,这应该可行:

options.xAxis.categories.push( sName );

如果您查看options对象的结构,可以看到categories位于属性xAxis下方。因此,你应该解决这个问题。

答案 1 :(得分:0)

您只需要首先定义类别:

options.categories = [];

然后你可以把东西推到这个数组中。

编辑:你也可以在你的json中放置categories: []