2

我有一个table这样的:

<table width="100%" style="table-layout: fixed;" class="listtable"> ... </table>

DOM 加载后,我删除了最后一个td. 每个浏览器,当然除了 IE8,都将表格保持在 100%。

IE8 只是删除该列留下空间而不调整其他列。检查表格时,table元素为 100%,但tbody不是。我已经尝试在删除列后设置宽度tbody,但没有效果。

有谁知道我可以如何强制 IE8 重新渲染我的表格并拉伸超过 100%?

注意:我无法控制服务器端生成的 html,所以我需要在这里使用 JavaScript。

4

1 回答 1

1

我尝试根据您的需要创建一个 jsfiddle,并且在激活 IE8 兼容模式的情况下,我没有遇到您的 IE9 问题。那个脚本适合你吗?http://jsfiddle.net/3TpGt/2/

我在不使用 javascript 的情况下创建了一个代码,因为我不知道您是否要使用库。

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; "
于 2012-12-19T12:38:39.677 回答