在Javascript中的变量中使用while()语句?

时间:2015-03-24 21:25:54

标签: javascript jquery charts

我一直在尝试使用YouTube API生成Google图表,方法是将表格中的数据直接放入Google折线图中。但是在不能使用一段时间之后发现自己陷入了困境();变量内的语句。

生成图表的当前功能如图所示

 function drawChart() {

    var data = google.visualization.arrayToDataTable([
      ['Day', 'Views', 'Subscribers'],
      ['2008',  1530,      540],
    ]);

    console.log(data);

    var options = {
      title: 'Channel Performance',
      curveType: 'function',
      legend: { position: 'bottom' }
    };

    var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

    chart.draw(data, options);
  }

当我尝试输入while()语句时,它看起来像这样:

var data = google.visualization.arrayToDataTable([
      ['Day', 'Views', 'Subscribers'],
      while (mywhilestatement) { dosomething }
      ['2008',  1530,      540],
    ]);

但是当我尝试插入我的while()语句时,它会中断并返回一个无效的令牌错误:

var eqno = 1;
    var day = $(".danalytics tr").eq(eqno).children().eq(0).text();
    var views = parseInt($(".danalytics tr").eq(eqno).children().eq(1).text());
    var subs = parseInt($(".danalytics tr").eq(eqno).children().eq(2).text());

  while (eqno < rowcount) {
    "['" + $(".danalytics tr").eq(eqno).children().eq(0).text() + "', " + parseInt($(".danalytics tr").eq(eqno).children().eq(1).text()) + ", " + parseInt($(".danalytics tr").eq(eqno).children().eq(2).text()) + "],";
    eqno++;
  }

我知道while语句是有效的,因为我已经尝试过控制台记录响应。

如何解决在此方法中无法将数据导入图表的问题,我可以使用哪种旁路,或者是否有一种不同的(正确的)方法来执行此操作我不知道?

进入该表的原始数据来自对API的file_get_contents请求,该API返回JSON数据。

1 个答案:

答案 0 :(得分:0)

你应该在将数组传递给arrayToDataTable()之前构造它。 我的意思是这样的:

var dataArray = [
    ['Day', 'Views', 'Subscribers']
];


var eqno = 1;

while (eqno < rowcount) {
    var day = $(".danalytics tr").eq(eqno).children().eq(0).text();
    var views = parseInt($(".danalytics tr").eq(eqno).children().eq(1).text());
    var subs = parseInt($(".danalytics tr").eq(eqno).children().eq(2).text());

    dataArray.push([day, views, subs]);
    eqno++;
}

dataArray.push(['2008',  1530,      540]);

var data = google.visualization.arrayToDataTable(dataArray);
...

在原始帖子中,while(){}中的代码构造了一个类似数组的字符串。它在控制台中看起来不错,但你需要一个实际的JS数组作为参数传递。