2009-04-21 10 views
3

현재 응용 프로그램에서 한 테이블의 내용을 다른 테이블로 복사해야합니다 ... innerHTML을 설정하면 FF로 완벽하게 작동하지만 IE8에서는 작동하지 않습니다 ... 여기 있습니다 FF로 복사 한 코드 :한 테이블의 내용을 다른 테이블로 복사

getID("tableA").innerHTML = getID("tableB").innerHTML; 
// getID is a custom function i wrote to provide a shorter version of document.getElementById(); 

TableA는 비어 있습니다 (tbody 태그 만 있음). TableB의는 다음과 같이보고한다 : ... ..

 

table 
    tbody 
    tr 
     td "Content" /td 
     td "Content" /td 
    /tr 
    /tbody 
/table 
 

가 이미 nodeValue를 사용하여 시도하거나 대한 appendData 또는 outerHTML에 .. 아무것도하지만 정말 일을 ...

답변

7

인터넷 익스플로러는 내부를 편집 할 수하지 않습니다 innerHTML을 가진 테이블의 - 그것은 전부 또는 아무것도 아니다.

당신이 정보를 복사 할 innerHTML을 사용하려고하기 때문에, 전체 사본 내가 이런 짓을 했을까하는 경우 (즉, 중복 될 수있는 ID 속성이없는) 안전합니다 :

var source = document.getElementById('tableA'); 
var destination = document.getElementById('tableB'); 
var copy = source.cloneNode(true); 
copy.setAttribute('id', 'tableB'); 
destination.parentNode.replaceChild(copy, destination); 
+0

완벽하게 작동했습니다.^감사합니다! – SvenFinke

+0

좋은 공유. FF/Safari/Chrome 등에서 작동하는 방법이라면 누구나 코멘트 할 수 있습니까? – MikeJ

+0

죄송합니다. 나는 보편적으로 일할 방법을 의미 했습니까? – MikeJ

0

나는 이것이 IE 8에서 수정되지 않았다는 것을 알고 놀랐다. 이런, 발을 짚어 라. 이것은 Internet Explorer의 innerHTML 구현에서 의도적으로 누락 된 것입니다. innerHTML을 테이블에 설정할 수 없습니다. 이 기능을 만든 사람은 an explanation and a workaround입니다. 기본적으로 실제 tbody 노드를 확보하고 replaceChild()를 사용하여 원래 테이블의 tbody를 그 노드로 변경할 수 있습니다.

관련 문제