aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/document/createdocumentfragment/index.html
blob: 3812ec0571fc3c181daf9cc6a56873a87adb2bc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
---
title: Document.createDocumentFragment()
slug: Web/API/Document/createDocumentFragment
tags:
  - API
  - DOM
  - Document
  - Method
  - Reference
  - createDocumentFragment
translation_of: Web/API/Document/createDocumentFragment
---
<p>{{APIRef("DOM WHATWG")}}</p>

<p><span class="seoSummary">新しい空の {{domxref("DocumentFragment")}} を作成し、そこに DOM ノードを追加して画面外の DOM ツリーを作成します。</span></p>

<h2 id="Syntax" name="Syntax">構文</h2>

<pre class="syntaxbox notranslate">var <var>fragment</var> = document.createDocumentFragment();
</pre>

<h3 id="Value" name="Value"></h3>

<p>新しく作成された空の {{domxref("DocumentFragment")}} オブジェクトで、中にノードが挿入できるものです。</p>

<h2 id="Usage_notes" name="Usage_notes">使用上の注意</h2>

<p><code>DocumentFragment</code> は DOM の {{domxref("Node")}} オブジェクトですが、メインの DOM ツリーの一部にはなりません。通常の使い方は、文書フラグメントを生成し、その文書フラグメントに要素を追加して、その文書フラグメントを DOM ツリーへ追加することです。 DOM ツリー内では、文書フラグメントはすべての子要素によって置き換えられます。</p>

<p>文書フラグメントは<em>メモリ内</em>にあり、メインの DOM ツリーの一部ではないため、文書フラグメントに子要素を追加してもページの<a href="https://developers.google.com/speed/articles/reflow?csw=1">リフロー</a> (要素の位置と大きさを決定するための計算) が行われません。そのため文書フラグメントを利用することによって、<a href="http://ejohn.org/blog/dom-documentfragments/">性能の改善</a>が見込まれます。</p>

<p><code>DocumentFragment</code> コンストラクターを使用して新しいフラグメントを生成することもできます。</p>

<pre class="brush: js notranslate">let fragment = new DocumentFragment();</pre>

<h2 id="Example" name="Example"></h2>

<p>この例では、主要なウェブブラウザのリストを <code>DocumentFragment</code> 内に作成し、表示するドキュメントに新しい DOM サブツリーを追加しています。</p>

<h3 id="HTML">HTML</h3>

<pre class="brush: html notranslate">&lt;ul id="ul"&gt;
&lt;/ul&gt;</pre>

<h3 id="JavaScript">JavaScript</h3>

<pre class="brush: js notranslate">var element  = document.getElementById('ul'); // ul が存在することを仮定
var fragment = document.createDocumentFragment();
var browsers = ['Firefox', 'Chrome', 'Opera',
    'Safari', 'Internet Explorer'];

browsers.forEach(function(browser) {
    var li = document.createElement('li');
    li.textContent = browser;
    fragment.appendChild(li);
});

element.appendChild(fragment);
</pre>

<h3 id="Result" name="Result">結果</h3>

<p>{{EmbedLiveSample("Example", 600, 140)}}</p>

<h2 id="Specifications" name="Specifications">仕様書</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">仕様書</th>
   <th scope="col">状態</th>
   <th scope="col">備考</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('DOM WHATWG', '#dom-document-createdocumentfragment', 'Document.createDocumentFragment()')}}</td>
   <td>{{Spec2('DOM WHATWG')}}</td>
   <td>DOM 1 仕様書にて初回定義</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>

<div>
<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>

<p>{{Compat("api.Document.createDocumentFragment")}}</p>
</div>

<h2 id="See_also" name="See_also">関連情報</h2>

<ul>
 <li>{{domxref("DOMImplementation.createDocument", "document.implementation.createDocument()")}}</li>
 <li>{{domxref("documentFragment")}}</li>
</ul>