因为我们不能设置table-cell的最大高度,所以我使用这个循环来限制行高(等于单元格),通过增加表宽度直到所有行高度<高度我在循环中设置。
var i = 0,
row, table = document.getElementsByTagName('table')[0],
j = table.offsetWidth;
while (row = table.rows[i++]) {
while (row.offsetHeight > 200 && j < 3000) {
j += 250;
table.style.width = j + 'px';
}
}
但是在这个脚本中存在一个问题,如果由于某种原因特定的行高度不能小于400px,这大于我为脚本中的行设置的最大高度,则表格变得不必要3000px宽因为循环中的条件。
如果行宽度在循环表宽度增加之前和之后相同,是否有任何方法可以将循环发送到下一行。我试过网络搜索,但没有找到处理这个,如果有人知道这个,请帮助我
示例(没有<br/>
标记时没问题):http://jsfiddle.net/jm5cpqr4/5/
示例(<br/>
使用限制最小可能的单元格高度时的问题):http://jsfiddle.net/jm5cpqr4/6/
答案 0 :(得分:0)
script47正确指出分辨率中使用了break语句。
读者可能需要在jsfiddle的“失败”情况下减少测试的偏移值,以便在浏览器中重现问题 - 它并没有立即失败
解决方案示例:
function loaded()
{ var i = 0, row, table = document.getElementsByTagName('table')[0],
j = table.offsetWidth;
var testHeight = 100;
while (row = table.rows[i++])
{ var h0 = row.offsetHeight;
while (row.offsetHeight > testHeight && j < 3000)
{ j += testHeight;
table.style.width = j + 'px';
if(row.offsetHeight==h0)
{ table.style.width = j-testHeight + 'px'
break;
}
}
}
}
loaded();