2

たとえば、以下のdiv、htmlコードがあります

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

しかし、on ieのinnerHTMLプロパティを設定するときはdiv(id=testDiv)、以下のコードを参照してください。

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

そして、divは高さと幅を持ち、空白のdivではなくなります。
それが理由ですか?
innerHTML =''を設定したときにdivを空白のdivにしたい場合(display:noneを設定しない場合)、どうすればよいですか?
テストコードを表示します( 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 に答える