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 に答える