Несколько счетчиков в цикле Javascript для цикла
Прежде чем я вырву свои волосы и спустимся по неправильному пути с точки зрения отладки. Может кто-то подтвердить, что этот код будет действовать по назначению. То есть. оживить 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
, ничего не происходит, и я получаю эту ошибку:
Неактивный SyntaxError: Неожиданный токен; на строке "for()"...
Ответы
Ответ 1
У вас есть точки с запятой, где вы хотите запятые:
for (i=1, j=0, k=150; i<=5; i++, j+=30, k-=30) { /* do work */ }
У вас должно быть только три "утверждения" внутри вашего for
for( [init]; [test]; [increments]) { [block] }
Чтобы выполнить несколько [inits]
или [increments]
, вы должны использовать иногда магический, но забытый, запятый оператор
Ответ 2
слишком много точек с запятой
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){
Ответ 3
Вы допустили грамматические ошибки в своем коде, которые вы могли бы легко заметить, если бы использовали инструменты статического анализа кода, такие как прекрасный JSHint.
Кроме того, вы должны лучше понимать использование оператора запятой в JavaScript, наш сайт уже имеет несколько ответов на него.