我试图创建一个html元素作为jQuery对象,然后在javaScript函数中引用它。然而,在我将它作为参数传递给函数后,该对象变成'未定义的'。jQuery对象传递给Javascript函数时未定义
//globals
var handCanvasArray = new Array();
var canvasIdNum = 0;
在点击一个jQuery移动按钮,制作新的画布元素,其存储在一个阵列中,并试图在一个函数来使用它:
//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。我增加它,以便下次单击时,该画布将存储在下一个索引中(此时可以很好地改进整体流程))。
您使用两个不同的变量与阵列,“canvasIdNum”和“currCanvasID”,但其中只有一个被设置为您发布的代码的值。 – Pointy 2011-06-14 20:53:56
在你的例子中,你使用两个不同的变量('canvasIdNum'和'currCanvasID')作为'handCanvasArray'的索引。他们保证是相同的价值吗? – codelahoma 2011-06-14 20:54:20
正是我想说的......什么是'currCanvasID'设置? – 2011-06-14 20:55:31