2014-05-20 2 views
0

배열 배열에 문제가 있습니다. 아래 코드를 실행하면 배열에 함수가 추가되지만 함수 내부의 인덱스 값은 변경되지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사합니다for 루프에서 javascript 함수의 배열을 생성하십시오.

var dlinks = []; 
function getLinks(index) { 
    return function() { 
     this.echo('report link September'); 
     casper.start(reportList[index]); 
     casper.thenOpen(reportList[index], function() { 
      casper.capture('data1.png'); 
      var dlUrl = reportList[index] + '&csv=true'; 
      this.download(dlUrl , reportDates[index].substring(0,2) + myfile, "GET"); 
     }); 
    } 
} 
console.log(getLinks(1)); 
for (var i = 0; i < reportList.length; i ++) { 
     dlinks.push(getLinks(i)); 
} 
+0

는 어떤 행동을 그렇게 생각하게? 나는 괜찮아 보인다. 실제 색인을 인쇄 했습니까? – DrC

+0

예 console.log (getLinks (1)) : 함수를 인쇄하지만 변수 색인은 변경되지 않습니다. 그것은 1이어야합니다. 그 이유는 실제로 dlinks 배열이 생성 될 때까지 함수를 호출하지 않기 때문입니다. – user3474649

+0

그러나 나중에 (dlink를 통해) 호출 할 때 생성 된 함수에서 console.log ("Index is"+ index)를 수행해야합니다. – DrC

답변

0

약간의 구문 오류가 있습니다.

var dlinks = []; 
function getLinks(index) { 
    return function() { 
     return index; 
    }; 
} 
for (var i = 0; i < 10; i ++) { 
    dlinks.push(getLinks(i)); 
    $("body").append(getLinks(i)); 
} 

$("body").append("Test"); 

http://jsfiddle.net/HFXrm/

관련 문제