Я пытаюсь создать элемент 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 (). Я увеличиваю его так, чтобы в следующий раз, когда я щелкну, холст будет сохранен в следующем индексе (общий поток для этого в настоящий момент вполне может быть улучшен;)).