2012-05-22 4 views

답변

4

document.getElementById("myTbl").getElementsByTagName('td')을 사용해야합니다.

+0

감사합니다. 그것은 그것을하는 더 좋은 방법 인 것처럼 보입니다. W3C 레퍼런스는 Firefox가이 [link] (w3schools.com/jsref/coll_table_cells.asp)를 지원함을 명시하고 있습니다. 또한, tableObject.cells 시도 Firefox에서이 예제의 경우 작동합니다 [링크] (http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_table_cells) – Horizon

+1

"W3C 참조"아니에요. 그것은 w3schools입니다. 이것은 종종 잘못되었으며이 경우 분명히 잘못되었습니다. 귀하의 예제는 실제로 모든 브라우저에서 지원되는 _row_ 테이블의 .cells를보고 있습니다. –

+0

@BorisZbarsky : 네, w3schools입니다. 죄송합니다 잘못된 표기법 거기에. 하지만 내가 말한 것은 _alert_를 alert (document.getElementById ("myTable"). 셀)로 변경하여 예제를 시도하는 것입니다. – Horizon

1

오래된 인터넷 익스플로러 앱을 포팅하는 중에 오늘날이 문제에 빠져 들었습니다.

경고 :
container.getElementsByTagName('tagname') 반환 쿼리 tagname 일치 container 내부 ALL 요소가.

따라서 table.getElementsByTagName('td')은 모두 td을 포함하여 중첩 테이블을 포함합니다.
그러나 table.cells은 구현하지 않습니다.

또한 분명히 th과 일치하지 않습니다. 그래서 그 세포가 선택적으로 TD의 ...

table.cells의 예상 기능을 심은하려면이 (thtd DOM 모두 를 반환하는 순서 상대를 해결하는 방법의 '문제'로 이어지는 반환 모음에없는 'IF-다른'같은 크기 정확히 팩, 아직 위의 GZip으로 압축이 작은 의해 또는

function tableCells(t){ 
    if(t.cells) return t.cells; // use internal routine when supported 
    for(var a=[], r=t.rows, y=0, c, x; t=r[y++];){ 
     for(c=t.cells, x=0; t=c[x++]; a.push(t)); 
    } 
    return a; 
} 

, '하나의 복귀'를 사용 : - 오더), 나는 다음과 같은 간단한 기능을 썼다. PS : 나는 table.rows[X].cells을 -ting concat을 시도했지만

사용 예 (난 그렇게 어쨌든 일을 안심하지 않을 있지만) 그 작동하지 않았다 : (그것은 배열을 반환합니다
var identifier = tableCells(/*reference to table (or thead/tbody/tfoot) here*/);
을하지 라이브 콜렉션) table.cells의 결과와 유사합니다.

희망이 도움이 될 누군가

관련 문제