2017-01-12 3 views
2

私はちょうど私のページが唯一のdivのコンテンツを表示し、他のすべての要素を破棄したいので、私はそれのdivに私の体を設定しようとするが、それは単に失敗しました:Javascriptでドキュメント本文をdivに設定する方法は?

マイコード:

document.body = document.querySelector('#b')
<div id="a"> 
 
    div a 
 
</div> 
 

 
<div id="b"> 
 
    div b 
 
</div>
DIVに文書本体を設定するにはどのように

{ 
    "message": "Uncaught HierarchyRequestError: Failed to set the 'body' property on 'Document': The new body element is of type 'DIV'. It must be either a 'BODY' or 'FRAMESET' element.", 
    "filename": "http://stacksnippets.net/js", 
    "lineno": 19, 
    "colno": 23 
} 

、:

そしてその結果は?

答えて

3

エラーで説明したように、divまたはその他の要素を本文に設定することはできません。

body要素内のHTMLを変更することができます。

本文のinnerHTMLを対象要素のouterHTMLに設定します。これにより、以前の本文のコンテンツが新しいコンテンツに置き換えられます。

document.body.innerHTML = document.querySelector('#b').outerHTML;
<div id="a"> 
 
    div a 
 
</div> 
 

 
<div id="b"> 
 
    div b 
 
</div>

+0

あなたはちょうど11秒で私を得ました:P: – squiroid

+0

私は、そのdivに結びつくイベントリスナーがなくなっているのを発見しました。それを回避する方法はありますか? – Sayakiss

+0

@Sayakissこの場合、 'body'の内容を' div'で置き換えたり、 'body'の内容を' div'で置き換えてバインドすることができます。 – Tushar

2

交換

document.body = document.querySelector('#b') 

document.body.innerHTML = document.querySelector('#b').innerHTML 
+0

divにバインドされたイベントリスナーが見つかりました。それを回避する方法はありますか? – Sayakiss

3

document.getElementsByTagName('body')[0].innerHTML = document.querySelector('#b').innerHTML;
<div id="a"> 
 
    div a 
 
</div> 
 

 
<div id="b"> 
 
    div b 
 
</div>

0

jQueryを使用:$( 'div')。not( ':first')。remove();

関連する問題