1

我似乎无法弄清楚我如何拥有多个图表并使用一个更新功能更新这些图表。
我有一个 HTML 文件,在那个文件中我有这个:

<script type="text/javascript" src="highchart/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="highchart/highcharts.js"></script>
<script type="text/javascript" src="highchart/highcharts-more.js"></script>
<script type="text/javascript" src="windspeed.js"></script>
<script type="text/javascript" src="livedata.js"></script>

风速.js:

$(function () {
    var windspeed = new Highcharts.Chart({
        chart: {
            renderTo: 'windspeed',
            type: 'gauge',
            plotBackgroundColor: null,
            plotBackgroundImage: null,
            plotBorderWidth: 0,
            plotShadow: false
        }, 
etc.
}

livedata.js:

$(function (livedata) {
        setInterval(function() {
        $(function() {
        $.getJSON('livedata.php', function(data) {
            $.each(data, function(key,val) {
            if (key == 'WindSpeed')
            {
            var point = windspeed.series[0].points[0];
                point.update(val);
            }
            });
        });
        })
    },2000)
    }
);

图表弹出但数据未更新,出现此错误:无法获取属性'0'的值:对象为空或未定义
我认为这与livedata.js无法看到风速变量有关,因为它是在不同的范围内。
有人可以告诉我如何让它工作吗?

4

1 回答 1

3

您无权访问 $(function()) 之外的变量,它们是本地的:

$(function () {
    var windspeed = new Highcharts.Chart({
        ...
    });
    var windspeed2 = new Highcharts.Chart({
        ...
    });
    var windspeed3 = new Highcharts.Chart({
        ...
    });
});

您可以将它们移出此范围:

var windspeed, windspeed2, windspeed3;
$(function () {
    windspeed = new Highcharts.Chart({
        ...
    });
    windspeed2 = new Highcharts.Chart({
        ...
    });
    windspeed3 = new Highcharts.Chart({
        ...
    });
});

所以现在,它们是全局变量,所以你也可以在其他文件中访问它们。

于 2013-02-08T12:55:51.710 回答