Я не могу понять ошибку в этом jQuery
-
06-07-2019 - |
Вопрос
На странице возникли проблемы...http://schnell.dreamhosters.com/index.php?page=gallery#
Я использую Firebug для отладки jQuery и других фрагментов кода, и он оказался очень полезным для отладки Javascript/jQuery.Однако в то же время это был один из самых разочаровывающих опытов отладки, с которыми я когда-либо сталкивался.Я не знаю почему, но иногда кажется, что я могу скопировать чужую методологию из учебника, персонаж за персонажем, и все равно получать ошибки.
В любом случае, проблема здесь в том, что Firebug утверждает, что в строке 20 исходного кода есть ошибка.
отсутствующий :после идентификатора свойства [Прерывание при этой ошибке] $('#table').animate({"left:" + attr + "px"}, 2000);
Мне эта ошибка кажется огромной нагрузкой, потому что двоеточие прямо там!И именно поэтому отладка jQuery/Javascript иногда доставляет такую боль.Сообщения об ошибках довольно запутаны и иногда даже не имеют для меня никакого смысла.Или, может быть, это просто Firebug.
В любом случае, цель, которую я здесь преследую, состоит в том, чтобы попытаться динамически изменить функцию анимации так, чтобы чем чаще вы нажимали стрелку влево, тем дальше влево смещалась сетка изображений (из-за природы CSS «левое» свойство).У меня есть переменные Javascript и скрытый тег ввода, которые помогают хранить важные значения, но основным препятствием является получение функции анимации для распознавания этих переменных.Насколько я могу судить, он принимает только строковые литералы в качестве аргументов о том, как анимировать, и документация мне не помогает, потому что в ней не обсуждается использование переменных с анимацией, как будто это невозможно.
Ну, скажем так, я не люблю невозможного, ему очень нравится мешать мне.
Решение
Литерал объекта, переданный функции 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"
Другие советы
Пытаться:
$('#table').animate({left: attr}, 2000);
Единицы измерения «px» здесь не нужны.Помимо этого, вышеизложенное является правильным созданием анонимного объекта.Вы просто помещали строку в фигурные скобки.