2011-12-01 15 views
18

Antes de arrancarme los pelos y seguir el camino equivocado en términos de depuración. ¿Alguien puede confirmar que este código funcionará según lo previsto? Es decir. animar 5 divs a diferentes posiciones:Varios contadores en Javascript para el 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. 
     }); 
    } 
}); 

Cuando pulso en el #menuButton, no pasa nada y me sale este error:

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

+2

Un bucle for solo toma tres expresiones. Probablemente desee ',' entre asignaciones variables. Los ';' sirven para separar la asignación inicial, la condición y la expresión para ejecutar después de cada iteración. – pimvdb

+0

¿Por qué incrementar tres variables diferentes en lugar de incrementar una y multiplicarla por los otros valores? http://jsfiddle.net/jasper/7fkx7/2/ – Jasper

+0

@Jasper Me gusta mucho pero no se ajusta a mis requisitos, necesito los valores para comenzar en los que definí ... – benhowdle89

Respuesta

34

usted tiene un cierto punto y coma en la que desea comas:

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

Solo debe tener tres "declaraciones" dentro de su for

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

Para hacer múltiples [inits] o [increments] usted tiene que utilizar las veces magical, but oft forgotten, comma operator

12

demasiados puntos y comas no

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

debería ser

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

:) muchas gracias – benhowdle89

Cuestiones relacionadas