2011-07-23 10 views
7

私はJavascriptでDOMを完全にクリアしたいと思っています。 (「この操作に無効なターゲット要素」)IEでのエラーを生成します。このような頭をクリアし、興味深いことにJavascript Clear DOM

document.getElementsByTagName("html")[0].innerHTML = ""; 
document.body.innerHTML = ""; 

を、しかし、正常クリアします:

は、私はこのように、いくつかのことを試してみましたChromeのヘッド。しかし、このように本体を消去するのはIEでは機能しますが、Chromeでは黙って失敗します。

私も

document.childNodes.length = 0; 

を試してみましたが、これは明らかに、読み取り専用のプロパティであり、何もしません。

DOMをクリアするにはブラウザ間の優れた方法はありますか?

+1

私の質問は、あなたがこの正確に達成しようとしているものになります。私はあなたがこれを行う必要がある状況を考えることができない原因になる – Ibu

+7

ええ、人々は常に私にすべての私の質問に尋ねる。 DOMをプログラムでクリアしたい理由がないと思っても、やってみたいと思っています。あなたが好きなら、私はちょうど楽しみのためにそれをやりたいと思っています。 –

+0

あなたのページにあるJavaScriptを実行していて、そのページから現在実行しているJavaScriptをクリアしたいのですか?私の問題のように聞こえる。 – jfriend00

答えて

11

これは動作します...

document.removeChild(document.documentElement); 

jsFiddle

ブラウザはdoctypeをそのまま残します。ここ

+0

あなたの編集が気に入っています。 1行 – Ibu

+0

どのように誰もdocument.write()に言及していませんか? –

2

は完璧な、有用な例ではなく、innerHTMLはHTML4でofficially supported in HTML5ではなく、document年代を設定

/** 
* clear child nodes 
* @param {HTMLElement} node 
*/ 
    clearChildren : function(node) { 
     if (!node) { 
      return; 
     } 
     if(node.innerHTML){ 
      node.innerHTML = ''; 
      return; 
     } 
     while (node.childElementCount > 0) { 
     var child = node.childNodes.item(0); 
     if(isIE){ 
      child.onmousedown = null; 
      child.onmouseover = null; 
      child.onmouseout = null; 
      child.onclick = null; 
      child.oncontextmenu = null; 
     } 
     node.removeChild(child); 
    } 
    } 
2

を使用することができます。これはHTML4で動作するはず

var html = document.documentElement; 
while(html.firstChild){ 
    html.removeChild(html.firstChild); 
} 
2

ないクロスブラウザは、Operaが書き込み可能outerHTML性質を持っていますが。

document.documentElement.outerHTML = ""; 
0

それははるかに簡単することができ

document.write();