javascript - 使用 document.getElementById 获取变量值后 Highcharts 中断

标签 javascript jquery highcharts

我用 Highcharts 创建了一个图表,效果很好,你可以在这里看到它的实际效果:

/*Getting Data*/
var dataQuantity = [8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 27786, 30589, 27989, 28141, 28141, 28141, 28141];

var dataMv = [19.69, 19.69, 19.69, 19.69, 19.69, 19.69, 19.69, 19.69, 19.69, 19.69, 19.69, 16.66, 16.06, 16.66, 16.66, 16.66, 16.66, 16.66];

var dataDate = [1501457113, 1501459513, 1501461913, 1501464313, 1501466713, 1501469113, 1501471513, 1501473913, 1501476313, 1501478713, 1501481113, 1501483513, 1501485913, 1501488313, 1501490713, 1501493113, 1501495513, 1501497913];



var myChart = null;
$(document).ready(function() {
  myChart = Highcharts.chart('chart', {
    chart: {
      type: 'line'
    },
    title: {
      text: ''
    },
    xAxis: {
      categories: dataDate
    },
    yAxis: [{
      title: {
        text: 'Market Value'
      }
    }, {
      title: {
        text: 'Quantity'
      },
      opposite: true
    }],
    series: [{
      name: 'Market Value',
      yAxis: 0,
      data: dataMv
    }, {
      name: 'Quantity',
      yAxis: 1,
      data: dataQuantity
    }]
  });
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="chart" style="width:100%; height:400px;"></div>

我的问题是我的网站是用 PHP 编写的,所以我将数据传递到 javascript 的方式是在非显示中回显它并使用 javascript 从中获取值。我尝试这样做,但失败了:

/*Getting Data*/
var dataQuantity = [8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 27786, 30589, 27989, 28141, 28141, 28141, 28141];

var dataMv = document.getElementById('JSON-mv').innerHTML;

var dataDate = [1501457113, 1501459513, 1501461913, 1501464313, 1501466713, 1501469113, 1501471513, 1501473913, 1501476313, 1501478713, 1501481113, 1501483513, 1501485913, 1501488313, 1501490713, 1501493113, 1501495513, 1501497913];



var myChart = null;
$(document).ready(function() {
  myChart = Highcharts.chart('chart', {
    chart: {
      type: 'line'
    },
    title: {
      text: ''
    },
    xAxis: {
      categories: dataDate
    },
    yAxis: [{
      title: {
        text: 'Market Value'
      }
    }, {
      title: {
        text: 'Quantity'
      },
      opposite: true
    }],
    series: [{
      name: 'Market Value',
      yAxis: 0,
      data: dataMv
    }, {
      name: 'Quantity',
      yAxis: 1,
      data: dataQuantity
    }]
  });
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="JSON-mv" style="display:none;">[19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,16.66,16.06,16.66,16.66,16.66,16.66,16.66]</div>
<div id="chart" style="width:100%; height:400px;"></div>

唯一不同的是我使用了

var dataMv = document.getElementById('JSON-mv').innerHTML;

dataMv 的值应该与我刚刚将其声明为 dataMv = [x,y,z] 的值相同还是不同?

最佳答案

如果您直接使用 document.getElementById('JSON-mv').innerHTML 其类型为字符串,那么您的图表会中断转换为数组,并且应该可以正常工作,这是一种快速的方法

    var dataQuantity = [8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 8327, 27786, 30589, 27989, 28141, 28141, 28141, 28141];
    var dataMv = document.getElementById('JSON-mv').innerHTML;
    dataMv = dataMv.replace('[','');
    dataMv = dataMv.replace(']','');
    dataMv = dataMv.split(',');
    var dataDate = [1501457113, 1501459513, 1501461913, 1501464313, 1501466713, 1501469113, 1501471513, 1501473913, 1501476313, 1501478713, 1501481113, 1501483513, 1501485913, 1501488313, 1501490713, 1501493113, 1501495513, 1501497913];
    var myChart = null;
    $(document).ready(function() {
      myChart = Highcharts.chart('chart', {
        chart: {
          type: 'line'
        },
        title: {
          text: ''
        },
        xAxis: {
          categories: dataDate
        },
        yAxis: [{
          title: {
            text: 'Market Value'
          }
        }, {
          title: {
            text: 'Quantity'
          },
          opposite: true
        }],
        series: [{
          name: 'Market Value',
          yAxis: 0,
          data: dataMv
        }, {
          name: 'Quantity',
          yAxis: 1,
          data: dataQuantity
        }]
      });
    });

<!-- language: lang-html -->

    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="JSON-mv" style="display:none;">[19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,19.69,16.66,16.06,16.66,16.66,16.66,16.66,16.66]</div>
    <div id="chart" style="width:100%; height:400px;"></div>

关于javascript - 使用 document.getElementById 获取变量值后 Highcharts 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416150/

相关文章:

javascript - Vuejs 动态输入绑定(bind)和计算不是函数

javascript - 构建一个 div 类来移除粘性元素

javascript - 选择文档模式 8 时,High Chart Legends 旋转在 IE 10,11 上不起作用

jquery - HighCharts - 删除堆叠条上系列之间的空间

javascript - 将 React 添加到现有页面并在 .js 中获取 URL 参数

Javascript 在客户端无法访问的情况下解密文件

javascript - 从 Web 套接字创建数组并根据 Javascript 中的数组元素递增

javascript - 将 smarty 变量分配给 jquery 选择器

jquery - 如何调用刚刚绑定(bind)的事件

javascript - 以编程方式构建不同类型的 Highcharts。