2015-03-24 29 views
-2

我一直試圖通過將表格中的數據直接放入Google折線圖來生成使用YouTube API的Google圖表。但是因爲無法使用一段時間而發現自己陷入了困境();變量內部的語句。在JavaScript中的變量內使用while()語句?

當前函數生成的圖表是顯示

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評論是有效的,因爲我已經嘗試控制檯記錄響應。

如何解決不能夠將數據放在此方法中的圖表的問題,我可以用什麼旁路還是有不同的(正確的)方法做它,我很想念?

原始數據進入表來自一個的file_get_contents請求返回JSON數據返回的API。

+2

'while()'在控制檯中有效。它作爲一大塊代碼是有效的。它在*數組中間不*有效。即使它*爲*,以後也需要用逗號將它與數組中的下列元素分開。 – 2015-03-24 21:29:51

+0

將函數或閉包中的while函數括起來並使用該函數的結果。 while循環本身不是有效的參數。 – mopsyd 2015-03-24 21:31:36

+0

你能用一個答案@mopsyd來解釋嗎?我不知道如何去做。我知道一段時間在中間是無效的,我不知道解決我遇到的問題,這就是爲什麼我問這個問題 – 2015-03-24 21:34:06

回答

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數組作爲參數傳遞。

+0

哇!關於它如何看起來很漂亮的很好的解釋不是一個數組,我現在明白它好多了。 +1! – 2015-03-24 22:05:33