我正在尝试将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如何处理对象参数感到困惑/困惑。
有没有更好的方法将对象作为参数传递?
编辑:为清晰起见进行编辑。对不起人!实现我遗漏了一些关于数组索引的代码,但是当调用Animate()时,currCanvasID变量将等于canvasIdNum。我增加它,以便下次单击时,该画布将存储在下一个索引中(此时整体流程可以很好地改进;))。
答案 0 :(得分:0)
如果将handCanvasArray声明为全局,请尝试仅将currCanvasID传递给Animate()函数,然后直接从中引用handCanvasArray。
ķ