【问题标题】:Highcharts/Highstock dynamically add/remove multiple seriesHighcharts/Highstock 动态添加/删除多个系列
【发布时间】:2017-06-02 03:46:51
【问题描述】:

我是一名 Java/PHP 程序员,无法掌握 Javascript,所以我需要一些简单的东西。

在此处获取图表:http://www.highcharts.com/stock/demo/compare

这显示了 3 个系列,它们都是预定义的。我用自己的数据进行了等效设置。

我实际拥有的是 150 个系列的数据,我希望用户能够在不刷新页面的情况下选择要显示的数据。我知道我需要以某种方式使用 Chart.addSeries(),并且我查看了通过单击按钮添加系列的演示:http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/stock/members/chart-addseries/

问题是,这个按钮在网页和 JS 中都是硬编码的:

<button id="button">Add series</button>

<script>
$('#button').click(function() {
    var chart = $('#container').highcharts();
    chart.addSeries({
        name: 'ADBE',
        data: ADBE
    });
    $(this).attr('disabled', true);
});
</script>

我不喜欢 150 个按钮,但我当然不希望每个按钮都有一个独特的功能。有人可以重写一个我可以蚕食的简短示例吗?我的JS真的太简陋了。

也许复选框会很好,但实际上任何类型的切换都可以。可以从图表中删除系列(单击图例除外)吗?

谁能提供一些将 150 系列列表与图表本身联系起来的技巧?

每个系列都必须通过 JSON 单独加载。

或者,我应该只加载所有 150 个系列并禁用其中的 149 个,允许用户通过图例本身进行切换吗?

【问题讨论】:

    标签: javascript dynamic highcharts highstock


    【解决方案1】:

    我使用复选框为您提供了解决方案。目标复选框是具有“选择”类的复选框。 “foreach”函数遍历所有复选框。该名称成为当前选择的“值”,并且由于您没有为数据提供任何上下文,因此当前正在手动输入数据。你可以玩它,让它为你工作。

    $('#button').click(function() {
        var buttons = $('.choice');
        var chart = $('#container').highcharts();
    
        buttons.each(function(){
            var choice = this.value;
    
            chart.addSeries({
                name: choice,
                data: ADBE
            });
        });
    });
    

    【讨论】:

    • 这绝对是朝着正确方向迈出的一步,它将让用户包含他们选择的多个系列;谢谢!不幸的是,这是一枪;需要重新加载页面才能更改任何内容。这可以改进吗?
    • 好的,您已经很接近了,非常感谢您抽出宝贵的时间,但还有最后一个问题:所有检查点都显示相同的数据。我们有数据,只需要以某种方式切换到它。
    • Stack Overflow 与为您提供解决方案的人无关。这是关于帮助您找到解决方案。请记住这一点。我不知道应用程序上下文,也不会尝试为您设计最佳解决方案。那是你的工作。然而,这里是修改后的小提琴,前提是所有“系列”都被引用为全局变量,就像你现在引用它们一样。 Modified JS fiddle
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    相关资源
    最近更新 更多