我有一个包含几行的 HTML 表(这是动态构建的)。所有的里面<tr>都有一个<td>。
如果<td>里面没有\xe2\x80\x99t HTML 内容,我希望它是不可见的。
如何才能做到这一点?(并不是说里面的 HTML 是动态渲染的,我不想使用或上display:none的 或任何其他属性)。<td><tr>
代码示例:
\n\n<html>\n <body bgcolor="#E6E6FA">\n <table cellSpacing="0" cellPadding="0">\n <tr>\n <td>one cell</td>\n </tr>\n <tr>\n <td bgcolor="#FF0000"></td>\n </tr>\n <tr>\n <td>two cell</td>\n </tr>\n </table>\n </body>\n</html>\nRun Code Online (Sandbox Code Playgroud)\n\n在 Firefox 中,空的 TD 是不可见的。然而,在 IE 中,TD 占用 1 个像素的高度:
\n\n
使用 DOM Inspector 查看,我发现它需要 1 个像素:
\n\n
如何设置TD不可见?我可以在 TD 内执行任何脚本吗?
\n您可以使用 CSS 伪选择器:empty:\n
#myDynamicTable td:empty\n{\n display: none;\n}\nRun Code Online (Sandbox Code Playgroud)\n\njsFiddle 示例: http: //jsfiddle.net/vKEBY/6/
\n\n如果你想支持 IE<9:\n
\n\nvar ieVer = getInternetExplorerVersion();\nif (ieVer != -1 && ieVer < 9.0) {\n // for IE<9 support\n var dynamicTable = document.getElementById("myDynamicTable");\n var TDs = dynamicTable.getElementsByTagName("td");\n\n for (var i = 0; i < TDs.length; i++) {\n if (TDs[i].innerHTML == "") {\n TDs[i].style.display = "none";\n }\n }\n}\n\n/**\n * All credits to Microsoft\n * http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx#ParsingUA\n */\nfunction getInternetExplorerVersion()\n// Returns the version of Internet Explorer or a -1\n// (indicating the use of another browser).\n{\n var rv = -1; // Return value assumes failure.\n if (navigator.appName == \'Microsoft Internet Explorer\') {\n var ua = navigator.userAgent;\n var re = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})");\n if (re.exec(ua) != null) rv = parseFloat(RegExp.$1);\n }\n return rv;\n}\xe2\x80\x8b\nRun Code Online (Sandbox Code Playgroud)\n\njsFiddle 示例: http: //jsfiddle.net/vKEBY/6/
\n