如果没有变化,则将循环发送到下一行

时间:2015-08-14 01:22:35

标签: javascript jquery

因为我们不能设置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/

1 个答案:

答案 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();