2

我正在尝试动态更新 Google Charts Gauge 中的值,但是当我尝试使用变量作为值时,它会中断。

var data = google.visualization.arrayToDataTable([
    ['Label', 'Value'],
    //Doesn't work:
    ['Barometer', x],
    //Works:
    [x, 28],
    //Works:
    ['Barometer', 28]
    ]);

我认为问题在于我声明变量的方式,因为当我只使用 时var x=28,它工作正常。这是我用来获取变量的代码:它使用 Jquery 来获取 JSON 文件,并从文件中获取一个值:

var x
    $.getJSON('http://pipes.yahoo.com/pipes/pipe.run?_id=467a55b506ba06b9ca364b1403880b65&_render=json&textinput1=40.78158&textinput2=-73.96648&_callback=?',
        function(data){
            x = data.value.items[0].data[1].parameters.pressure.value;
        }
    )

我尝试使用x = eval(x),但它仍然无法正常工作。但是,当我使用x = eval(x+1-1)orx = x+1-1时,仪表出现了,但值为NaN

4

1 回答 1

2

好的,解决了。

我最终加载 Google Charts API 之前定义了变量,然后,在定义变量之前,我添加了x = eval(x).

所以这是最终的简化代码:

var x
$.getJSON('insert JSON url here WITH QUOTES',
    function(data){
        x = path.to.something.in.JSON.file.here;
    }

google.load('visualization', '1', {
    packages: ['gauge']
});
google.setOnLoadCallback(drawChart);

function drawChart() {

    x = eval(x)
    var Data = google.visualization.arrayToDataTable([
        ['Label', 'Value'],
        ['Gauge', x],
        ]);

    var Options = {
    };

    var Chart = new google.visualization.Gauge(document.getElementById('insertGaugeContainerHere'));
    Chart.draw(Data, Options);
}

如果您想知道,最终产品位于此处

于 2012-05-28T16:47:30.723 回答