Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript tr.style.display=&x27;无';留下烦人的空间_Javascript_Html_Css - Fatal编程技术网

Javascript tr.style.display=&x27;无';留下烦人的空间

Javascript tr.style.display=&x27;无';留下烦人的空间,javascript,html,css,Javascript,Html,Css,我有一个javascript函数,可以去掉一些表行。我只是想把它们藏起来,因为我想以后再把它们展示出来 我使用了style.display=none,这似乎很有效 tr.style.display = 'none'; 当我想再次展示它们时,我只需打电话: tr.style.display = ''; 我的表格行再次显示。很好 然而,在InternetExplorer中,有一个恼人的空白区域,该行以前所在的位置约为1-2像素高。Chrome完全隐藏这一行 (我不能在JSFiddle中显示,因为

我有一个javascript函数,可以去掉一些表行。我只是想把它们藏起来,因为我想以后再把它们展示出来

我使用了style.display=none,这似乎很有效

tr.style.display = 'none';
当我想再次展示它们时,我只需打电话:

tr.style.display = '';
我的表格行再次显示。很好

然而,在InternetExplorer中,有一个恼人的空白区域,该行以前所在的位置约为1-2像素高。Chrome完全隐藏这一行

(我不能在JSFiddle中显示,因为IE在JSFiddle中不起作用)


有人知道这是为什么吗?

哈哈,你要踢自己了,只是在IE8上测试了一下,我也得到了同样的结果,不知道为什么,然后我想起了老式的html。。将此添加到您的表中

 <table cellpadding="0" cellspacing="0" border="0">

我也得到了1px的空间,加上它就消失了。另外,尝试在样式表中使用*删除填充和边距。然后添加类来控制表。下面是我测试的代码

<html><head><title></title>
    <style>
        * { padding:0; margin:0; }
        .visiblerow { background:#ccc; }
        .visiblecell { padding: 10px; margin: 10px; }
        .hiddenrow { background:#000; display: none; }
        .hiddencell { padding: 0px; margin: 0px; }
    </style>
</head>
<body>
    <table cellpadding="0" cellspacing="0" border="0">
        <tr class="visiblerow">
            <td class="visiblecell">test</td>
        </tr>
        <tr class="hiddenrow">
            <td class="hiddencell">hide me</td>
        </tr>
        <tr class="visiblerow">
            <td class="visiblecell">test</td>
        </tr>
    </table>
</body>
</html>

*{填充:0;边距:0;}
.visiblerow{背景:#ccc;}
.visiblecell{填充:10px;边距:10px;}
.hiddenrow{背景:#000;显示:无;}
.hiddencell{padding:0px;margin:0px;}
测试
把我藏起来
测试

在IE8中删除表格标记中的单元格填充、间距和边框,您将看到1px空格返回。现在,通过定义类,您可以创建一个漂亮的javascript函数,该函数还可以切换行上的类。

哪个版本的IE?JSFIDLE在IE9以后的版本中工作良好。没有办法。IE中的行是否有默认的填充?也许如果你重置它,你将没有更多的空白(你可以使用IE开发者工具查看并检查你的行),你能提供一个它在IE中的外观的屏幕截图吗?如果你使用javascript来输出行,为什么不只是标记它们并跳过在交互中打印行,而不是使用CSS?这样就根本没有DOM元素了。你可以发布一个小提琴,显示html,js和你的CSS…太好了。但是,我不能将间距和填充设置为零,因为需要考虑表格网格。如果要为未隐藏的行的样式添加间距和填充,请使用类。。hiddenrow和visiblerow类。可见行类可以添加CSS填充属性。编辑我的答案以更好地显示这一点。尝试了一切,但似乎没有任何效果。我们不得不将逻辑更改为服务器端。我希望看到完整的代码,这不可能不起作用。-JSFIDLE在IE8中爆炸,但您仍然可以在怪癖模式下加载该示例。。在应答中添加了代码的最终更新