如何在表格中将td高度设置为0px?

时间:2012-04-02 07:47:01

标签: html html-table

我有一个包含几行的HTML表(这是动态构建的)。所有<tr>内都有一个<td>

如果一个<td>内部没有HTML内容,我希望它不可见。

如何做到这一点? (不是内部的HTML是动态呈现的,我不想在display:none<td>上使用<tr>或任何其他属性。

代码示例:

<html>
    <body bgcolor="#E6E6FA">
        <table cellSpacing="0" cellPadding="0">
            <tr>
                <td>one cell</td>
            </tr>
            <tr>
                <td bgcolor="#FF0000"></td>
            </tr>
            <tr>
                <td>two cell</td>
            </tr>
        </table>
    </body>
</html>

在Firefox中,空TD是不可见的。然而,在IE中,TD占据了1个像素的高度:

enter image description here

使用DOM Inspector查看我看到它需要1个像素:

enter image description here

如何设置TD不可见?我可以在TD内执行任何脚本吗?

2 个答案:

答案 0 :(得分:1)

您可以使用CSS伪选择器:empty

#myDynamicTable td:empty
{
  display: none;
}

jsFiddle示例:http://jsfiddle.net/vKEBY/6/

如果你想支持IE&lt; 9:

var ieVer = getInternetExplorerVersion();
if (ieVer != -1 && ieVer < 9.0) {
    // for IE<9 support
    var dynamicTable = document.getElementById("myDynamicTable");
    var TDs = dynamicTable.getElementsByTagName("td");

    for (var i = 0; i < TDs.length; i++) {
        if (TDs[i].innerHTML == "") {
            TDs[i].style.display = "none";
        }
    }
}

/**
  * All credits to Microsoft
  * http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx#ParsingUA
  */
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null) rv = parseFloat(RegExp.$1);
    }
    return rv;
}​

jsFiddle示例:http://jsfiddle.net/vKEBY/6/

答案 1 :(得分:0)

如果使用jQuery,这个脚本会变得更清晰(只是一个想法)。

$('#myTable td:empty').hide();