2011-07-23 15 views
7

Chcę całkowicie wyczyścić DOM z JavaScript.Javascript Wyczyść DOM

Próbowałem kilka rzeczy, takich jak to:

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

ciekawe, czyszcząc głowicę tak wygeneruje błąd („nieprawidłowy elementu docelowego dla tej operacji”) w IE, ale skutecznie wyczyścić kieruj się w Chrome. Jednak czyszczenie ciała w ten sposób działa w IE, ale nie działa w przeglądarce Chrome cicho.

Próbowałem również

document.childNodes.length = 0; 

ale to widocznie tylko do odczytu i nic nie zrobi.

Czy istnieje dobry sposób na przeglądanie DOM w różnych przeglądarkach?

+1

moje pytanie będzie to, co chcesz przez to osiągnąć z tego dokładnie. bo nie mogę wymyślić sytuacji, w której musisz to zrobić – Ibu

+7

Jezu, ludzie zawsze pytają mnie o to na wszystkie moje pytania. Nawet jeśli nie możesz wymyślić dobrego powodu, dla którego chcesz programowo wyczyścić DOM, nadal chcę to zrobić. Jeśli chcesz, po prostu załóżmy, że po prostu chcę to zrobić dla zabawy. –

+0

Tak, wykonujesz skrypt javascript na twojej stronie i chcesz wyczyścić javascript, który używasz w tej chwili ze strony? Brzmi jak problem dla mnie. – jfriend00

Odpowiedz

11

To działa ...

document.removeChild(document.documentElement); 

jsFiddle.

Należy zauważyć, że przeglądarka pozostawi dokument w stanie nienaruszonym.

+0

Podoba mi się twoja edycja lepiej. jedna linia. – Ibu

+0

Dlaczego nikt nie wspomniał o document.write()? –

2

tutaj jest przydatna przykład, nie idealne, ale można użyć

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

Chociaż nie krzyż przeglądarka Opera ma zapisu outerHTML nieruchomości.

document.documentElement.outerHTML = ""; 
0

To może być znacznie prostsze

document.write();