Несколько счетчиков в Javascript для цикла - PullRequest
24 голосов
/ 02 декабря 2011

Прежде чем я вырву свои волосы и пойду по неправильному пути с точки зрения отладки.Может ли кто-нибудь подтвердить, что этот код будет делать, как задумано.То есть.анимировать 5 делений на разные позиции:

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.
        });
    }
});

Когда я нажимаю #menuButton, ничего не происходит, и я получаю эту ошибку:

Uncaught SyntaxError: Неожиданный токен;в строке 'for ()' ...

Ответы [ 3 ]

42 голосов
/ 02 декабря 2011

У вас есть несколько точек с запятой, где вы хотите запятые:

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

У вас должно быть только три "утверждения" внутри вашего for

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

Чтобы сделать несколько [inits] или [increments] Вы должны использовать иногда магический, но часто забытый оператор запятой

13 голосов
/ 02 декабря 2011

слишком много точек с запятой

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

должно быть

for (i=1, j=0, k=150; i<=5; i++, j+=30, k-=30){
2 голосов
/ 02 декабря 2011

Вы допустили грамматические ошибки в своем коде, которые можно было бы легко обнаружить, если бы вы использовали инструменты статического анализа кода, такие как прекрасный JSHint .

Кроме того, вы должны понимать, как использовать оператор запятой в JavaScript, наш сайт имеет несколько ответов на него уже .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...