2011-06-14 76 views
1

我试图创建一个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。我增加它,以便下次单击时,该画布将存储在下一个索引中(此时可以很好地改进整体流程))。

+1

您使用两个不同的变量与阵列,“canvasIdNum”和“currCanvasID”,但其中只有一个被设置为您发布的代码的值。 – Pointy 2011-06-14 20:53:56

+0

在你的例子中,你使用两个不同的变量('canvasIdNum'和'currCanvasID')作为'handCanvasArray'的索引。他们保证是相同的价值吗? – codelahoma 2011-06-14 20:54:20

+0

正是我想说的......什么是'currCanvasID'设置? – 2011-06-14 20:55:31

回答

0

如果将handCanvasArray声明为全局的,则尝试仅将currCanvasID传递给Animate()函数,然后直接从它引用handCanvasArray。

ķ