2011-02-06 5 views
0

몇 줄의 HTML 표가 있습니다.Javascript replace child?

원래 테이블 행 (TR) 중 일부에 ID를 부여했으며 자바 스크립트를 사용하여 일부 동적 항목이있는이 테이블 행의 INNERHTML을 설정했습니다.

그러나 Internet Explorer는 인라인 요소의 INNERHTML을 설정하려고하기 때문에 '알 수없는 런타임 오류'가 발생합니다.

그래서 지금은 전체 테이블 행 하위를 새 것으로 교체하려고 시도하고 있습니다. 새 테이블 행이 원본과 동일한 위치에 있어야하기 때문에 appendChild를 단순히 추가 할 수는 없습니다 (실제로이 테이블 행의 내용이 변경되었을 때처럼 모방하기 위해 전체 행이 '대체'됨).

누군가가이 문제에 대한 해결책을 가지고 있기를 바랬는데 (나는 생각했다) 하위 위치를 얻는다. b) 원래 테이블 행을 삭제하고 c) A)에서 찾은 하위 위치에 새 테이블 행을 삽입한다. 아마도 더 쉽고 우수한 솔루션이있을 것입니다. 약간의 입력을 좋아할 것입니다.

건배!

답변

4

IE는 innerHTML을 통해 테이블 ​​조작을 좋아하지 않습니다. 이 작업을 수행 할 수 있습니다

var oldrow = document.getElementById('the_id'); 
var newrow = document.createElement('tr'); 

// add cells to the new row 
var newcell = document.createElement('td'); 
newcell.innerHTML = "content"; 
newrow.appendChild(newcell); 
// ... ... ... 

// Replace the old row with the new one: 
oldrow.parentNode.insertBefore(newrow, oldrow); 
oldrow.parentNode.removeChild(oldrow); 
newrow.id = 'the_id'; 

꺼짐 - 주제이 같은 문제는 내가 일반적으로 브라우저 기이을 통해 부드럽게, jQuery 같은 Prototype, YUI, Closure, 또는 any of several others을 라이브러리를 사용하는 것이 좋습니다 이유의 일부입니다 DOM 자체가 제공하지 않는 추가 기본 기능을 제공합니다. 이를 통해 브라우저의 함정이 아닌 실제 문제에 집중할 수 있습니다.

0

innerHTML 아니요, INNERHTML입니다.

+0

사실이지만 문제는 아닙니다. –

0

현재 행 이후에 자식 행을 추가하고 이전 행을 삭제하기로 결정했습니다. 내가 생각할 수있는 가장 효율적인 방법.