Я не могу понять ошибку в этом JQuery - PullRequest
0 голосов
/ 27 октября 2009

Страница с проблемами ... http://schnell.dreamhosters.com/index.php?page=gallery#

Я использую Firebug для отладки jQuery и других трюков кода, и это оказалось очень полезным для отладки Javascript / jQuery. Однако, в то же время, это был один из самых неприятных отладочных событий, которые я когда-либо проходил. Я не уверен, почему, но иногда мне кажется, что я могу скопировать чью-то методологию из учебника, символ за персонажем, и все же все еще сталкиваться с ошибками.

В любом случае проблема в том, что Firebug утверждает, что в строке 20 источника есть ошибка.

отсутствует: после идентификатора свойства [Перерыв в этой ошибке] $ ('# table'). Animate ({"left:" + attr + "px"}, 2000); \ n

Эта ошибка мне кажется огромной нагрузкой, потому что двоеточие прямо там ! И именно поэтому отладка jQuery / Javascript иногда является такой болью. Сообщения об ошибках довольно запутаны и иногда даже не имеют смысла для меня. Или, может быть, это просто Firebug.

В любом случае, цель, которую я здесь преследую, заключается в том, чтобы я пытался динамически изменить функцию анимации так, чтобы чем больше вы нажимали стрелку влево, тем дальше влево смещалась сетка изображений (из-за природы CSS-свойства 'left'). У меня есть переменные Javascript и скрытый тег ввода, помогающий хранить основные значения, но основным препятствием является получение функции animate для распознавания этих переменных. Насколько я могу судить, он будет принимать строковые литералы только для аргументов о том, как анимировать, и документация мне не поможет, потому что не обсуждается использование переменных с анимацией, как будто это невозможно.

Хорошо, давайте просто скажем, что я не люблю невозможное, ему очень нравится мешать мне.

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

Литерал объекта, переданный функции animate, сформирован неправильно, он должен быть:

$('#table').animate({left: attr + "px"}, 2000);

Редактировать : Если присмотреться к своему коду, вы также пытаетесь получить значение из ввода с id = "count", и у вас отсутствует символ # для селектора идентификатора:

var count = +$('#count').val(); // get #count value as Number

Вы также увеличиваете эту переменную count, но сначала нужно преобразовать ее в Number, поскольку атрибут value элементов input является строковым. ( Я сделал это с помощью унарного оператора плюс в правой части задания ).

Вы должны преобразовать его в число, потому что, если вы добавите две переменные и одна из них будет строкой, произойдет конкатенация:

 "1" + 1 == "11"
0 голосов
/ 27 октября 2009

Попробуйте:

$('#table').animate({left: attr}, 2000);

Единицы измерения «px» здесь не нужны. Кроме того, вышеизложенное является правильным созданием анонимного объекта. Вы просто помещали строку в фигурные скобки.

...