简体   繁体   English

Javascript“表格宽度”正在更改“ Tbody宽度”

[英]Javascript “Table Width” Is Changing “Tbody Width”

I made a javascript to change many tables width according to the amount of text inside each tables. 我做了一个JavaScript,根据每个表格中的文本量更改了许多表格的宽度。


But my problem is javascript is changing the width of tbody (saw in browser inspect element) not the table width, that's why there is a unnecessary white-space (red color) after the the table (i think because of my bad coding or while loop), please see this fiddle and scroll to the right: http://jsfiddle.net/p9edr8e9/1/ Where is my mistake and how it change width of whole table? 但是我的问题是javascript正在更改tbody的宽度(在浏览器检查元素中看到)而不是表格宽度,这就是表格后面有不必要的空白(红色)的原因(我认为是因为我的编码错误或循环),请查看此小提琴并向右滚动: http : //jsfiddle.net/p9edr8e9/1/我的错误在哪里,它如何改变整个桌子的宽度?

Thanks! 谢谢!

Javascript: Javascript:

var table = document.getElementsByClassName("tabwid");
for (var i = 0; i < table.length; i++) {
    var j = 0,
        row;
    tabwid = table[i].offsetWidth;
    row = table[i].rows;
    while (row[j++]) {
        var hei = row.offsetHeight;
        while (tabwid < 4000) {
            tabwid += 500;
            table[i].style.width = tabwid + 'px';
            if (row.offsetHeight == hei) {
                table[i].style.width = tabwid - 500 + 'px';
                break;
            }
        }
    }
}

CSS: CSS:

.table{ overflow-x:auto; line-height:1.4em;}
table{ border-collapse:collapse; display:block; background:#ffaaaa; }
tbody{ background:#aaffaa; }
th{ text-align:center; vertical-align:top; background:#222; color:#eee; padding:16px 8px; font-weight:normal; }
td{ padding:8px; border:1px solid #aaa; }

HTML: HTML:

<div class="table">

<table class="tabwid">
    <tbody>
        <tr>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
            <th>HHH HHH HHH HHH</th>
        </tr>
        <tr>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
            <td>AAA AAA AAA AAA</td>
        </tr>
                <tr>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
            <td>BBB BBB BBB BBB</td>
        </tr>
                <tr>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
            <td>CCC CCC CCC CCC</td>
        </tr>
                <tr>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
            <td>DDD DDD DDD DDD</td>
        </tr>
    </tbody>
</table>

</div>
table{ border-collapse:collapse; display:block; background:#ffaaaa; }

Please remove the display: block; 请删除display: block; assignment to display the table as what it is: a table. 将该表显示为表的分配:一个表。 Then you ar going to be fine. 那你会没事的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM