2010-03-21 6 views
1

에서 사이클과 관련하여 도움이 필요하십니까, 그 droppables의 그리드를 추가 1, times + 1, days + 1. 그러나주기에 따라 달라야합니다. 오, 예 - Droppables는 script.aculo.us 프레임 워크입니다.내가 그런 기능이 JS

답변

1

문제는 클로저에 대한 이해입니다. 둘러싸는 함수의 지역 변수 인 week, day 등의 값은 AddClassroomDrops의 실행 완료시 마지막 값이됩니다. 이것을 피하는 일반적인 방법은 함수를 반환하고 지역 변수를 다른 함수로 전달하는 것입니다. 예를 들어 :이 무당 후 작동

function enclosing() 
{ 
    for(var i = 0; i < 10; i++) 
    { 
     var f = function(j) { return function closureFunc() { // use j here }; }(i); 
     // here you can do Droppables.add(f); 
    } 
} 
0

는 춤 :

function AddClassroomDrops(grid, weeks, days, times) { 
    for(week = 1; week <= weeks; week++) { 
     for (day = 1; day <= days; day++) { 
      for (time = 1; time <= times; time++) { 
       var drop = function(week, day, time) { 
        Droppables.add('container_grid'+ grid + '_week' + week + '_day' + day + '_time' + time, { 
         accept: 'pair', 
         hoverclass : 'hovered_receiver', 
         onDrop: function(pair, receiver) { 
          new Ajax.Request(
           '/pairs/'+pair.id+'/update_on_drop', { 
           method : 'put', 
           parameters : { 
            classroom : grid, 
            week : week, 
            day : day, 
            time : time, 
            container : receiver.id 
           } 
           } 
          ); 
          } 
        }); 
       } 
       drop(week, day, time); 
      } 
     } 
    } 
} 
관련 문제