Javascript ie上的空白div,但不是空白
例如,下面有一个div、html代码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 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;