2011-12-01 13 views
18

Prima di strapparmi i capelli e andare giù per il percorso sbagliato in termini di debug. Qualcuno può confermare che questo codice farà come previsto. Vale a dire. animare 5 div a diverse posizioni:Contatori multipli in Javascript per il ciclo

var i, j, k; 
$('#menuButton').click(function(){ 
    for (i=1; j=0; k=150; i<=5; i++; j+=30; k-=30){ 
     $('.spinner #item' + i).animate({ 
      left: '+=' + j, 
      bottom: '+=' + k 
      }, 500, function() { 
      // Animation complete. 
     }); 
    } 
}); 

quando clicco sul #menuButton, non succede nulla e ottengo questo errore:

Uncaught SyntaxError: Unexpected token ; on the 'for()' line...

+2

Un ciclo for accetta solo tre espressioni. Probabilmente vuoi ',' tra le assegnazioni delle variabili. I ';' servono a separare l'assegnazione iniziale, la condizione e l'espressione da eseguire dopo ogni iterazione. – pimvdb

+0

Perché incrementare tre variabili diverse anziché incrementarne una e moltiplicare per gli altri valori? http://jsfiddle.net/jasper/7fkx7/2/ – Jasper

+0

@Jasper Mi piace molto ma non soddisfa le mie esigenze, ho bisogno dei valori per iniziare da quelli che ho definito ... – benhowdle89

risposta

34

Hai qualche punto e virgola in cui si desidera virgole:

for (i=1, j=0, k=150; i<=5; i++, j+=30, k-=30) { /* do work */ } 

Dovresti avere solo tre "dichiarazioni" all'interno del tuo for

for([init]; [test]; [increments]) { [block] } 

Per fare multipla [inits] o [increments] è necessario utilizzare le volte magical, but oft forgotten, comma operator

12

troppi punti e virgola non

for (i=1; j=0; k=150; i<=5; i++; j+=30; k-=30){ 

dovrebbe essere

for (i=1, j=0, k=150; i<=5; i++, j+=30, k-=30){ 
+1

:) grazie mille – benhowdle89