2010-08-20 17 views
0

Tenez compte des implémentations ci-dessous,Est-ce que je fais cette itération en javascript?

data.addRows([ 
    ['2004', 1000], 
    ['2005', 1170], 
    ['2006', 660], 
    ['2007', 1030] 
]); 

Les travaux ci-dessus (ie) il me fait ce que je veux.

et ma mise en œuvre est,

for (var i = 0; i < 10; i++) { 
     data.addRows['row'+i,i]; 
    } 

Est-ce une boucle ou valable pour ce que je fais mal?

J'utilise l'API de visualisation de Google pour dessiner des graphiques, mais les réponses ci-dessous ne fonctionne pas,

http://jsbin.com/okafa3/edit qui est une copie de http://code.google.com/apis/visualization/documentation/gallery/areachart.html

<html> 
    <head> 
    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
     google.load("visualization", "1", {packages:["corechart"]}); 
     google.setOnLoadCallback(drawChart); 
     function drawChart() { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('string', 'Year'); 
     data.addColumn('number', 'Sales'); 


     for (var i = 0; i < 10; i++) { 
     data.addRows(['row'+i,i]); 
    } 

      var chart = new google.visualization.AreaChart(document.getElementById('chart_div')); 
     chart.draw(data, {width: 400, height: 240, title: 'Company Performance', 
          hAxis: {title: 'Year', titleTextStyle: {color: '#FF0000'}} 
         }); 
     } 
    </script> 
    </head> 
    <body> 
    <div id="chart_div"></div> 
    </body> 
</html>​ 
+0

addRows attend un tableau de tableaux pendant que vous ne passez que le tableau. – VinayC

Répondre

3

Le code équivalent exact serait

var rows = []; 
for (var i=0; i<10; i++) { 
    rows.push(['row'+i, i]); 
} 
data.addRows(rows); 

Quelle avait suggéré helios fonctionne également, sauf qu'il est représentation non exacte du code précédent, car il ferait plus d'un appel à data.addRows.

2

vous manque la parenthèse de la fonction appel:

for (var i = 0; i < 10; i++) { 
     data.addRows(['row'+i,i]); 
    } 
+0

oh mon dieu comment pourrais-je raté cela. En tout cas merci de le signaler. –

+0

au moins votre pour la boucle est valide :) – Stefanvds

+0

@Pandiya Chendur: pas de soucis, des choses comme ça arrive. Vous cherchez si fort à trouver une erreur obscure que vous ne remarquez pas d'erreurs évidentes :) – nico

2

Il semble que votre méthode addRows nécessite un tableau de [string, int]. Ainsi, vous devez faire:

for (var i=0; i<10; i++) { 
    data.addRows( // parenthesis for calling a method 
     [   // array of 
      ['row'+i,i] // [string, int] even if it's only one 
     ]); 

(espaces et entre ajouté pour plus de clarté)