jQuery объект не определен при передаче в функцию Javascript - PullRequest
1 голос
/ 15 июня 2011

Я пытаюсь создать элемент html как объект jQuery, а затем ссылаться на него позже в функции javaScript. Однако после того, как я передал его функции в качестве параметра, объект становится неопределенным.

//globals
var handCanvasArray = new Array();
var canvasIdNum = 0;

После нажатия кнопки jQuery Mobile я создаю новый элемент canvas, сохраняю его в массиве и пытаюсь использовать его в функции:

//this code fires due to a button click
handCanvasArray[canvasIdNum] = $(document.createElement('canvas'));

//store the current canvasIdNum, then increment it for the next click
currCanvasID = canvasIdNum;
console.log("CurrCanvasID: " + currCanvasID);
canvasIdNum += 1;
Animate(handCanvasArray[currCanvasID]);

function Animate(pCanvasToAnimate) {
  console.log(pCanvasToAnimate);
  var canvasOffset = pCanvasToAnimate.offset();
}

Консоль печатает две строки:
[объект Объект]
не определен

Выполнение программы останавливается при попытке присвоить смещение переменной, поскольку pCanvasToAnimate не считается объектом. Возможно я объявляю новый элемент неправильно? Или, может быть, я просто ошибаюсь / не понимаю, как javascript обрабатывает параметры объекта.

Есть ли лучший способ передать объекты в качестве параметров?

Редактировать: редактирование для ясности. Извините, ребята! Понял, что я пропустил некоторый код относительно индекса для массива, но переменная currCanvasID будет равна canvasIdNum при вызове Animate (). Я увеличиваю его так, чтобы в следующий раз, когда я щелкну, холст будет сохранен в следующем индексе (общий поток для этого в настоящий момент вполне может быть улучшен;)).

1 Ответ

0 голосов
/ 15 июня 2011

Если вы объявляете свой handCanvasArray глобальным, попробуйте передать только currCanvasID в вашу функцию Animate (), а затем ссылаться на handCanvasArray непосредственно из него.

K

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