2011-06-14 5 views
1

html 요소를 jQuery 객체로 생성하려고 시도하고 있으며 나중에 자바 스크립트 함수에서 참조하려고합니다. 그러나 매개 변수로 함수에 전달한 후에는 개체가 '정의되지 않음'이됩니다.jQuery 자바 함수에 전달 될 때 객체가 정의되지 않음

JQuery와 모바일 버튼을 클릭하면
//globals 
var handCanvasArray = new Array(); 
var canvasIdNum = 0; 

, 나는 새로운 캔버스 요소를 생성, 배열에 저장하고, 함수에서 사용하려고 :

//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가 아니라고 사실 때문에 상기 변수에 대한 오프셋 할당을 시도에서 정지한다 [개체 개체] 개체로 간주됩니다. 아마도 새로운 요소를 잘못 선언 할 것입니다. 아니면, 아마 그냥 실수/자바 스크립트 개체 매개 변수를 처리하는 방법에 대해 혼란 스러워요.

개체를 매개 변수로 전달하는 더 좋은 방법이 있습니까?

편집 : 명료하게 편집하십시오. 미안 해요! 실현 된 배열의 인덱스에 관한 몇 가지 코드를 생략했지만 Animate()가 호출 될 때 currCanvasID 변수는 canvasIdNum과 같습니다. 다음 번 클릭 할 때 캔버스가 다음 인덱스에 저장 될 수 있도록이 값을 증가시킵니다 (이 경우 전반적인 흐름은 현재 매우 개선 될 수 있습니다.)).

+1

당신은 배열, "canvasIdNum"와 "currCanvasID"로 두 개의 서로 다른 변수를 사용하고 있지만 그 중 하나는 사용자가 게시 된 코드의 값으로 설정됩니다. – Pointy

+0

예제에서, 두 개의 다른 변수 ('canvasIdNum'과'currCanvasID')를'handCanvasArray'의 인덱스로 사용하고 있습니다. 그들은 같은 가치가 보장됩니까? – codelahoma

+0

그냥 'currCanvasID'가 어떻게 설정 되었습니까? –

답변

0

전역으로 handCanvasArray를 선언하는 경우 currCanvasID 만 Animate() 함수에 전달한 다음 HandCanvasArray에서 직접 참조하십시오.

K

관련 문제