不能在button - var可见性或事件处理问题上更新highcharts数据

Can't update highcharts data on button - var visibility or events handle issue

本文关键字:处理问题 更新 highcharts 数据 事件 button var 可见性 不能      更新时间:2023-09-26

我是JS的新手,有些问题不明白。

我的页面中有:

<script...>
$(function() {                                                                                                                               
  var charts_data = <%= @elms.get_charts_data %>;                                                                                           
  var elms_chart; 
  $(document).ready(function() {                                                                                                                                                                                                                                                     
    function create_elev_dist_chart() {                                                                                                        
    elms_chart = $("#elms_chart").highcharts({  
    ...
    series: [{       
         name: "H",
         pointInterval: 10,
         data: (function () {
           var el_data = [];
           var t = 1;
           for (var index in charts_data) {
             console.log(charts_data[index].el);
             el_data.push([t, charts_data[index].el]);
             t += charts_data[index].t;
           };           
           return el_data;
           })()
         },
...
});
</script>

我还写了一个非常简单的函数来更新图表上的数据:

function set_elms_chart_data() {
  elms_chart.series[0].setData([1, 1]);
};

添加按钮和事件处理程序:

$('#button').click(set_elms_chart_data());

但是,我不知道把这些放在哪里,或者我在哪里出错。如果我把这些放到

里面
$(function() {  

I get error:

TypeError: 'undefined' is not an object (evaluating 'elms_chart.series')

如果里面

$(document).ready(function() {  

得到这个错误:

TypeError: 'undefined' is not an object (evaluating 'elms_chart.series[0]')

你能帮我解决这个问题吗?

  • 如何访问图表?
  • 我应该把代码的事件处理程序?

您正在使用以下代码立即执行set_elms_chart_data:

$('#button').click(set_elms_chart_data());

你要做的是使用set_elms_chart_data作为回调函数:

$('#button').click(set_elms_chart_data);