0

我有一个以表格格式列出一些销售数据的页面。我想包括一个图表。由于我已经必须检索表的数据,我想我还将为 google 构建数组并将其放入隐藏输入中以使用 javascript 检索它。所以这是javascript

     // Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});


google.setOnLoadCallback(drawChart);

function drawChart() {
    var chartD = document.getElementById('chartD').value;
    var data = google.visualization.arrayToDataTable([chartD]);
    var options = {'title':'Sales'};
    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, options);
}

这是我从中获取数据的输入

<input type="hidden" id="chartD" value="['Date', 'Units Sold'], 
    ['03-01', 12.00], ['03-04', 32.00], ['03-06', 6.00],
    ['03-08', 19.00], ['03-11', 10.00], ['03-13', 5.00], ['03-15', 0]">

但是当我运行这个时,我得到一个错误Not a valid 2D array 我然后直接从视图页面源复制了这个值

var data = google.visualization.arrayToDataTable([['Date', 'Units Sold'], 
   ['03-01', 12.00], ['03-04', 32.00], ['03-06', 6.00], ['03-08', 19.00],
   ['03-11',    10.00], ['03-13', 5.00], ['03-15', 0]]);

这工作得很好。有谁知道问题是什么?

4

1 回答 1

0

这是正常的 javascript 功能,并不是谷歌独有的或奇怪的。

将您的 HTML 隐藏 div 元素放入文档中:

<input type="hidden" id="chartD" value="['Date', 'Units Sold'],
 ['03-01', 12.00], ['03-04', 32.00], ['03-06', 6.00],
 ['03-08', 19.00], ['03-11', 10.00], ['03-13', 5.00], ['03-15', 0]">

现在测试这个javascript:

    var chartD = document.getElementById('chartD').value;
    var array = new Array(['Date', 'Units Sold'],      ['03-01',  12.00], ['03-04', 32.00], ['03-06', 6.00],     ['03-08', 19.00],  ['03-11', 10.00], ['03-13', 5.00], ['03-15', 0]);
    var array2 = new Array(chartD);
    alert(array.length);
    alert(array2.length);

这与标准 javascript 的行为完全相同。

当您使用复制粘贴定义对象时,您会得到一个包含 8 行 2 列的数组(因此长度为 8)。

当您使用字符串定义对象时,您会得到一个包含一行和一列的数组(包含一个非常长的字符串)。

您为什么希望 Google 采取不同的行动?

您要么需要:

  1. 将完全形成的二维数组传递给谷歌
  2. 手动传入一个定义数组的字符串

这在文档中都有介绍。

期望 Google 有一些与 javascript 不同的时髦行为可能不是最好的方法。

于 2013-06-24T04:41:18.280 回答