Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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 ie上的空白div,但不是空白_Javascript_Css_Internet Explorer - Fatal编程技术网

Javascript ie上的空白div,但不是空白

Javascript ie上的空白div,但不是空白,javascript,css,internet-explorer,Javascript,Css,Internet Explorer,例如,下面有一个div、html代码 <div id="testDiv"></div> div将具有高度和宽度,不再是空白div 这就是为什么?? 如果在设置innerHTML=''时希望div是一个空白div(如果不设置显示:none),我应该怎么做? 现在显示测试代码(在ie7和chrome上运行的不同结果) #bl{背景:红色;} 函数f(a){ var t=document.getElementById(“bl”); t、 innerHTML=a; } 测试

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

<div id="testDiv"></div>
div将具有高度和宽度,不再是空白div
这就是为什么??
如果在设置innerHTML=''时希望div是一个空白div(如果不设置显示:none),我应该怎么做?
现在显示测试代码(在ie7和chrome上运行的不同结果)


#bl{背景:红色;}
函数f(a){
var t=document.getElementById(“bl”);
t、 innerHTML=a;
}
测试

我认为这是一种众所周知的IE行为。
除了将
innerHTML
设置为空字符串外,还可以将
font size
设置为0。

在函数中,检查文本是否为
'
,如果是,则从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;

你试过双引号而不是单引号吗?还有,你说“不空白”是什么意思?你能发布你的html代码吗?请分享你的代码,我无法在IE8中复制(样式是这样我可以看到框并点击它)什么版本的IE?我在IE9中尝试你的例子,看不到对div的任何更改。我看不到任何差异…使用IE8和firefox。但是如果我设置innerHTML='myvalue',文本将不会被看到任何移动设置
font size
返回原始值或
inherit
,这就是我不想使用显示的原因:无,如果有像触发haslayout属性这样的方法,并让它在ie上显示为standard
if (a=='') t.removeChild(t.childNodes[0]);
else t.innerHTML=a;
if (a=='') {while (t.hasChildNodes() t.removeChild(t.childNodes[0]);}
else t.innerHTML=a;