2013-06-19 121 views
0

我一直在避免JavaScript一段時間,但需要使用它爲我正在使用的谷歌圖表。我原來的代碼看起來像這樣...Javascript FOR循環陣列內部

echo "function drawChart() { 
    var data = google.visualization.arrayToDataTable([ 
     ['Date', 'Machines Total' ], 

     [ '$Day[6]', $Hour_Tot[7].$Min_Tot[7] ], 
     [ '$Day[5]', $Hour_Tot[6].$Min_Tot[6] ], 
     [ '$Day[4]', $Hour_Tot[5].$Min_Tot[5] ], 
     [ '$Day[3]', $Hour_Tot[4].$Min_Tot[4] ], 
     [ '$Day[2]', $Hour_Tot[3].$Min_Tot[3] ], 
     [ '$Day[1]', $Hour_Tot[2].$Min_Tot[2] ], 
     [ '$Day[0]', $Hour_Tot[1].$Min_Tot[1] ] 

     ]);"; 

此代碼工作正常,並已經過測試。我現在想要做的是有 圖表變得更加動態,所以用戶可以輸入一個數字,圖表可以輸出 天數的數據。所以我需要添加一個for循環。這就是我得到如此遠的地方。

echo "function drawChart() { 
    var data = google.visualization.arrayToDataTable([ 
     ['Date', 'Machine L1' ], 
     for (count = 1, DayNumber = 0; count == 7; ++count, ++DayNumber) 
    document.write([ '$Day[DayNumber]', $Hour_Tot[count].$Min_Tot[count]],); 
     ]);"; 

此代碼無效。我不明白如何使用document.write輸出 我需要複製上述代碼的7行。

+1

你爲什麼不使用PHP爲迭代設計? – andlrc

+0

@NULL說什麼。從PHP回聲的JavaScript像是瘋了,男人。 – sgroves

+0

谷歌圖表呼應在PHP中的JavaScript。我只是使用那裏的格式。 –

回答

1

此代碼不會工作,因爲您要在數組聲明中放置for循環。 你應該做到以下幾點...

echo "function drawChart() { 
var data = google.visualization.arrayToDataTable([ 
    ['Date', 'Machine L1' ],"; 
for ($count = 1, $DayNumber = 0; $count <= 7; ++$count, ++$DayNumber) { 
    echo " [ '$Day[$DayNumber]', $Hour_Tot[$count].$Min_Tot[$count]],"; 
} 
echo "]);"; 

或者你也可以搞定使用JavaScript,它應該是這樣的:

echo "var arr = [['Date', 'Machine L1']]; 
    for(var i=1;i<=7;i++) { 
    arr.push([{$Day}[i-1], {$Hour_Tot}[i].toString()+{$Min_Tot}[i].toString()]); 
    } 
    var data = google.visualization.arrayToDataTable(arr); 
"; 
+0

+1,但在@ ikishore的答案中應該是「count <= 7」 – sgroves

+0

謝謝@ikishsore –

+0

完美!感謝您的快速回答。一開始沒有工作,但我加了<=。謝謝。 –