2011-07-23 128 views
7

我想完全清除JavaScript的DOM。Javascript清除DOM

我已經嘗試了一些東西,像這樣:

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

有趣的是,清除頭這樣會產生一個錯誤(「對於此操作無效目標元素」)在IE,但會成功的清除前往Chrome。但是,像這樣清理機體可以在IE中使用,但在Chrome中靜靜地失敗。

我也曾嘗試

document.childNodes.length = 0; 

但是這顯然是一個只讀屬性,並不會做任何事情。

是否有一個很好的跨瀏覽器方式來清除DOM?

+1

我的問題是什麼是你想用這正是完成。是因爲我不能想到你需要這樣做的情況 – Ibu

+7

Jeez,人們總是問我所有的問題。即使你想不出爲什麼要以編程方式清除DOM,我仍然想要這樣做。如果你喜歡,只是假設我只是爲了好玩而隨便想做。 –

+0

所以,你正在執行你的頁面中的JavaScript,你想清除你現在正在從頁面運行的JavaScript?聽起來對我來說是一個問題。 – jfriend00

回答

11

這工作...

document.removeChild(document.documentElement); 

jsFiddle

請注意,瀏覽器將保持doctype不變。

+0

我更喜歡你的編輯。一條線。 – Ibu

+0

怎麼沒人提到document.write()? –

2

這裏是有用的例子,並不完美,但可以使用

/** 
* 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

雖然不跨瀏覽器,Opera有一個可寫outerHTML屬性。

document.documentElement.outerHTML = ""; 
0

它可以是簡單得多

document.write();