2014-04-03 3 views
3

안녕하세요 할 임 각 요소에 서로 다른 온 클릭 기능을 제공하기 위해 노력하는 코드 샘플은 다음과 같습니다설정 함수 매개 변수 동적으로

for (var i = 0; i < sizex; i++) { 
     for (var j = 0; j < sizey; j++) { 
      var canvas = document.createElement("CANVAS"); 
      var id = i * 10 + j; 
      canvas.id = "canvas" + id; 
      canvas.width = 25; 
      canvas.height = 25; 
      canvas.style = "border:1px solid black"; 
      canvas.onclick = function() { 
       canvasClicked(id); 
      }; 

      document.body.appendChild(canvas); 
     } 
    } 

문제는 항상 ID = SIZEX * 10 + SIZEY

호출 누가 canvasClasses의 매개 변수를 함수에 전달할 수 있습니까?이 함수는 각 캔버스마다 "다르다"는 의미입니까?

+1

클로저 친구들은 그것을 배우고 사랑합니다! – tymeJV

답변

2

클로저를 사용하십시오.

변수의 범위가 액세스 할 것이라고에서 폐쇄을 형성

canvas.onclick = function() { 
    canvasClicked(id); 
}; 

에서 클릭 처리기를 변경

.

canvas.onclick = function(nId) { 
    return function() { 
     canvasClicked(nId); 
    } 
}(id);