2009-05-18 2 views
7

테이블에 행을 추가하는 데 선호되는 방법은 무엇입니까?insertRow 대 appendChild

var tr = tbl.insertRow (-1);

또는

VAR의 TR = document.createElement ("TR"); tbl.appendChild (tr);

?

답변

5

insertRow이 훨씬 우수합니다. 등급 A 브라우저는 supported이며 덜 깔끔하고 API가 더 좋습니다.

+0

또한 행은 항상 테이블의 하위 항목이 아니므로 appendChild 메서드가 더 복잡해집니다. –

+0

@rex : 무슨 뜻인가요? – erikkallen

+0

요소가 아닌 의 하위 요소 일 수 있습니다. – Rob

3

insertRow은 DOM [1]이므로 더 신뢰할 수 있다고 주장 될 수 있습니다. (더를 외부 DOM의를 작동 할 때,하지만, 문서 내에서 테이블을 수정하려고 할 때

appendChild 방법은 지속적으로 빠르게 (소폭이기는하지만) 모든 테스트 브라우저 (IE6/7, FF3, Chrome2, Opera9) 맞은 편 일반적인 노력) 은 상당히 느립니다..

다른 말로하면 : 확실히 insertRow을 사용하십시오.


이 테스트는 신뢰할 수 없습니다 로컬 그래서 수행 하였다, 여기에 소스 참조 : 당신이 DOM 메소드를 사용한다면 http://pastie.org/482023

0

, 그럴 필요가 TBODY, THEAD, 또는 TFOOT 요소에 추가되어야한다, 테이블 요소가 아닙니다.

3

insertRow에 대한 좋은 인수가 있지만 단점이 있습니다. insertRow는 새로운 빈 행을 만들 수 있지만 appendChild는 기존 행 개체를 사용합니다. appendChild를 사용하면 테이블에서 행을 이동하거나 한 테이블에서 다른 테이블로 행을 이동하거나 테이블에서 행을 가져 와서 나중에 다시 넣을 수 있습니다 (페이징 된 테이블의 경우 매우 편리합니다). insertRow (및 insertCell)와 동일한 작업을 수행하려면 내용을 패키지로 만들고 새 행과 셀을 만든 다음 이전 내용을 새 셀에 추가해야합니다. 서투른, 겉으로는 덜 효율적. 이것을하는 더 우아한 방법이 있습니까? 기존의 행 객체를 사용하는 insertRow의 변형은 좋을 것입니다.