2013-10-19 5 views
1

테이블의 총 열을 계산하려고합니다.테이블의 열을 계산하는 방법

<table> 
     <tr> 
     <td>55</td> 
     <td>22</td> 
     <td>66</td> 
     </tr> 
     <tr> 
     <td>1</td>   
     <td>2</td> 
     <td>3</td>   
     </tr> 
    </table> 

위해 상기 구조 나 3 총 열을 줄 것이다.

나는 또한 나의 td를 위해 뭔가를하고있다. 나는 위의 each 코드 내 테이블의 최대 열을 셀 수 있는지 궁금

$("table td").each(function(){ 
     codes to manipulate td... 
}) 

처럼

내 코드입니다.

누구든지 내게 힌트를 줄 수 있습니까? 감사!

+0

하는 것은 너무 내 대답을보고 있는지 확인합니다. 선택한 솔루션보다 더 효율적입니다 (글로벌가없는 더 나은 솔루션이 있음). 또한 컬 스팬을 고려합니다. – plalx

답변

1

다음은 첫 번째 행의 열 수를 계산합니다. 그것은 (.index을 사용하여 결정)이 첫 번째 행에 해당 칼럼에 대한 카운트를 증가 :

var cols = 0; 
$("table td").each(function(){ 
    if ($(this).closest("tr").index() == 0) cols++; 
}) 

(Fiddle)


행 경우 계수를 테이블 내의 열들의 최대 수에 따라 (유용) 변수 열 수를 가지고 :

var maxColumns = Math.max.apply(null, $("table tr").map(function() { 
    return $(this).find("td").length; 
})); 

(Fiddle)

2

$("table td").length은 (6) 원하는 것이 아닌 테이블의 모든 열을 반환합니다.

$("table tr:eq(0) td").length은 첫 번째 행의 열 수를 알려줍니다.

+0

감사합니다 lbu,하지만 나는 내 각 함수 안에 몇 가지 코드를 작성할 수 있기를 바랬다. +1. – FlyingCat

+0

이것은 콜백을 고려한 것입니다. – plalx

+0

@ plalx 당신이 맞습니다. 좀 더 엔지니어링이 필요합니다. – Ibu

1
Math.max.apply(null, $("table tr").map(function(_,row) { return $(row).find("td").length; })) 
0

감사 LBU,하지만 난 내 각 함수 내에서 일부 코드를 작성할 수 있습니다 기대했다

당신은 할 수 있지만, 깨끗한 아니다 ...

DEMO

var maxCols = 0, 
    firstTr = $('table tr:first-child')[0]; 

$("table td").each(function() { 
    var $this = $(this); 

    if ($this.parent()[0] === firstTr) { 
     maxCols += parseInt($this.attr('colspan'), 10) || 1; 
    } 
}); 

참고 : 이렇게하면 colspans도 고려하십시오. 내가 생각할 수

0

제 1, 가장 쉽고 가장 성능이 좋은 대부분의 재사용 가능한 솔루션입니다 :

function colCount($table) { 
    return $table.find('tr').eq(0).children().length; 
} 

var cols = colCount($('table#myTable')); 
관련 문제