2

例如下面有一个 div,html 代码

<div id="testDiv"></div>

但是当我设置div(id=testDiv)on ie 的 innerHTML 属性时,请参见下面的代码:

document.getElementById('testDiv').innerHTML= '';

并且 div 将具有高度和宽度,不再是空白 div
,这就是为什么?
如果我希望设置innerHTML=''时div是空白div(如果不设置显示:无),我该怎么办?
现在显示测试代码(在 ie7和 chrome 上运行不同的结果)

<!DOCTYPE>
<html>
<head>
<style>
        #bl{background:red;}
</style>
<script type="text/javascript">
function f(a){
    var t=document.getElementById("bl");
    t.innerHTML=a;
}
</script>
</head>
<body>
    <button type="button"  onclick="f('')">test</button>
    <div id="bl"></div>
</body>
</html>
4

2 回答 2

2

在您的函数中,检查文本是否为'',如果是,则从 div 中删除子节点。而不是设置它的值。

if (a=='') t.removeChild(t.childNodes[0]);
else t.innerHTML=a;

检查了 IE8 和 IE8 的兼容模式(所以它也应该在 IE7 中工作)。

为了更稳定,您可以从中删除所有子节点t,就像这样......

if (a=='') {while (t.hasChildNodes() t.removeChild(t.childNodes[0]);}
else t.innerHTML=a;
于 2012-04-12T07:06:52.680 回答
1

我认为这是一种已知的 IE 行为。除了设置innerHTML为空字符串,您还可以设置font-size为 0。

于 2012-04-12T06:50:02.607 回答