2012-12-19 2 views
2

을 제거한 후 테이블을 다시 렌더링 만들기 나는 그런 table 있습니다. 물론 IE8을 제외한 모든 브라우저는 테이블을 100 %로 유지합니다.는 IE8이 열

IE8은 공백을 남기고 다른 열을 조정하지 않는 열을 제거합니다. 표를 검사 할 때 table 요소는 100 %이지만 tbody은 그렇지 않습니다. 이미 열을 제거한 후 tbody 너비를 설정해 보았지만 아무 효과가 없었습니다.

IE8이 내 테이블을 다시 렌더링하고 100 % 이상 확장 할 수있는 방법을 알고있는 사람이 있습니까?

참고 : 서버 쪽에서 생성 된 html을 제어 할 수 없으므로 여기에서 JavaScript를 사용해야합니다.

+0

thead, tbody, th 및 td 태그를 사용하여 테이블의 전체 구조를 제공 할 수 있습니까? 그리고 자바 스크립트 코드를 사용하고 있습니까? 그리고 왜 http://jsfiddle.net/에 있지 않습니까? P –

답변

1

필요에 따라 jsfiddle을 만들려고했는데 IE8 호환 모드가 활성화 된 IE9에서 문제가 발생하지 않았습니다. 그 스크립트가 당신을 위해 일하고 있습니까? http://jsfiddle.net/3TpGt/2/

라이브러리를 사용할지 여부를 모르겠으므로 자바 스크립트를 사용하지 않고 코드를 만들었습니다.

var table = document.getElementById("myTable"); 

var th = table.getElementsByTagName("th"); 
var thead = table.getElementsByTagName("thead"); 
var tbody= table.getElementsByTagName("tbody"); 
var tbody_tr= tbody[0].getElementsByTagName("tr"); 
var thead_tr = thead[0].getElementsByTagName("tr"); 

thead_tr[0].removeChild(th[th.length-1]); 

var current_td = null; 
for(i = 0; i < tbody_tr.length; i++) { 
    current_td = tbody_tr[i].getElementsByTagName("td"); 
    tbody_tr[i].removeChild(current_td[current_td.length-1]); 
}​ 

은 그럼 당신은 같은 삭제 후 열 폭을 강제 할 수

th[0].width = '50%'; 
th[1].width = '50%'; 

아니면 브라우저보기 자동, 열은 폭 계산 테이블의 스타일을 변경하는 것이 원하는 경우 :

style="table-layout: auto; " 
+0

이것은 IE8 표준 모드에서만 발생하는 것으로 보입니다. 감사! 기본적으로 테이블 레이아웃을 설정하여 동일한 작업을 수행하는 [이 대답] (http://stackoverflow.com/a/6079413/156481)을 발견했습니다. 그것은 실제로'setTimeout'을 사용할 때만 작동합니다, 아주 이상합니다. 당신은 당신의 대답에이 링크를 추가 할 수 있습니다. 도와 줘서 고마워! – acme

+0

오, 오, 죄송합니다. 내 컴퓨터에 원래 IE8이 설치되어 있지 않아서 도움이되지 않습니다! 너 오신 것을 환영합니다 ^^ –