Думаю, у меня была похожая проблема. Вот как я это решил.
У меня есть вложенные таблицы в таблицах.
Пользователи нажимали кнопку, и Javascript создавал новые строки и ячейки таблицы и заполнял ячейку данными из формы. Чтобы заставить ячейку переносить текст, а не расширяться по горизонтали, мне пришлось использовать тег <div></div>
внутри ячейки.
Чтобы заставить «таблицу» НЕ расширяться по вертикали при добавлении новых строк таблицы, мне пришлось поместить <div></div>
теги ниже <td>
, содержащего.
Итак, HTML, созданный из моего javascript, может выглядеть следующим образом.
<table id="root">
<tr id="A">
<td id="1" style="width:200px">Content</td>
<td id="2" style="width:530px">
<div height="correct_height" overflowY="auto">
<table id="comments_table" style="width:510px table-layout:fixed">
<tr>
<td style="word-wrap:break-word">
<div style="width:480px;white-space:nowrap">Comments</div>
</td>
</tr>
</table>
</div>
</td>
</tr>
.
.
.
</table>
Первый <td id="1">
создается функцией, которая запускается первой.
Вторая <td id="2">
создается функцией, которая запускается после, и она захватывает высоту <td id="1">
, так что высота 2-й ячейки в строке зависит от высоты 1-й ячейки в строке.
Ширина устроена таким образом, чтобы освободить место для вертикальной полосы прокрутки.
Вы должны вычесть любые используемые вами отступы. Например, если два элемента имеют style="padding:5px"
, то это означает 5top 5bottom x 2 элемента. Итак:
var correct_height = A.offsetHeight - 20;