2012-05-15 6 views
0

배열의 요소를 읽고 해당 값을 테이블의 <tr> 태그에 배포하는 함수를 만들려고합니다.자바에서 배열 반복 문제

(function() { 
    "use strict"; 
    var selectQG = { 
    distributeCat : function (tablerow, categories) { 
     var tr = $(tablerow), tri = 0; 
     tr.each(function() { 
     if (tri > 2) { 
      for (var i = 0; i<categories.length; i++) { 
      this.setAttribute('categoria',categories[i]); 
      } 
     } 
     tri++; 
     }); 
    } 
    } 
    var categories = ['1,2','3,4','5,6','7,8','9,10','11,12']; 
    selectQG.distributeCat('table tr', categories); 
}()); 

확인 html 코드 및 함수 작업을 참조하십시오이 바이올린 : http://jsfiddle.net/5kqEf/2/)

루프 6 번 실행되고 난 이유를 파악 할수 없어를 그래서 나는이 코드를 썼다. 저는 아직 프로그래밍 초보자입니다. 그래서 내가 뭘 잘못하고 있는지 알기 위해 도움이 필요합니다. 어떤 도움을 주시면 감사하겠습니다.

편집 : 이상형은 모든 <tr>이 배열 값을 가져옵니다. 제 3의 <tr>부터 시작해서 그것이 "if"조건부로 들어가는 이유입니다. 따라서 첫 번째 <tr>은 "categories [1]"을 얻고 두 번째 <tr>은 "categories [2]"를 얻습니다.

+0

어떤 루프를 참고 하시겠습니까? 'for' 루프는'categories' 배열을 6 개의 항목으로 반복하므로 이해가됩니다. – mellamokb

답변

1

테이블 루프 요소가 9 개이므로 외부 루프가 9 번 실행됩니다. 각 요소는 9 요소가되는 모든 tr 요소를 반복합니다. 그 말이 ... 그래서, 6 개 요소 (배열 var categories = ['1,2','3,4','5,6','7,8','9,10','11,12'];)를 통해 루프 루프에 대한 내부 http://jsfiddle.net/5kqEf/4/

를 참조

정확한 질문은 무엇입니까?

당신이 (범주보다 더 그럴 요소가있는 경우와 처음부터 다시) 인덱스를 기반으로 categorie을 선택하려는 경우, 당신이 대체 할 수 있습니다 :이

var index = tri % categories.length; 
this.setAttribute('categoria',categories[index]); 
+0

글쎄, 각 배열 값이 각 tr 태그에 대해 분산되어 있다는 생각입니다. 그러나 루프가 완료되면 여분의 반복으로 인해 tr 태그는 모든 속성, 즉 배열의 마지막 값을 가져옵니다. – darksoulsong

+0

모든 카테고리에 대해 다음 카테고리를 원한다면 루프하지 말고 인덱스 var를 사용하여 올바른 카테고리를 선택하십시오. 위의 답변을 업데이트했습니다. –

+0

운영자에 대한 링크를 제공해 주셔서 감사합니다. 그게 내게 많이 도움이 될 것입니다 =) – darksoulsong