|
2 | 2 | title: Node.childNodes
|
3 | 3 | slug: Web/API/Node/childNodes
|
4 | 4 | tags:
|
5 |
| - - API |
6 |
| - - DOM |
7 |
| - - DOMリファレンス |
8 | 5 | - プロパティ
|
9 | 6 | - リファレンス
|
| 7 | + - 読み取り専用 |
| 8 | +browser-compat: api.Node.childNodes |
10 | 9 | translation_of: Web/API/Node/childNodes
|
11 | 10 | ---
|
12 |
| -<p>{{ ApiRef() }}</p> |
13 |
| - |
14 |
| -<p><code><strong>Node.childNodes</strong></code>読み取り専用プロパティは、最初の子ノードにインデックス0が割り当てられている、指定された要素の子{{domxref("Node","nodes")}}の現在の{{domxref("NodeList")}}を返します。</p> |
15 |
| - |
16 |
| -<h2 id="構文">構文</h2> |
17 |
| - |
18 |
| -<pre class="syntaxbox">let <var>nodeList</var> = <var>elementNodeReference</var>.childNodes; |
19 |
| -</pre> |
20 |
| - |
21 |
| -<h2 id=".E6.9B.B8.E5.BC.8F.E3.81.A8.E5.80.A4" name=".E6.9B.B8.E5.BC.8F.E3.81.A8.E5.80.A4">例</h2> |
22 |
| - |
23 |
| -<h3 id="簡単な使用方法">簡単な使用方法</h3> |
24 |
| - |
25 |
| -<pre class="brush:js line-numbers language-js"><code class="language-js"><span class="comment token">// 変数pargは<p>要素へのオブジェクト参照です</span> |
26 |
| - |
27 |
| -<span class="comment token">// まず、pargが子ノードを持っているかをチェックします</span> |
28 |
| -<span class="keyword token">if</span> <span class="punctuation token">(</span>parg<span class="punctuation token">.</span><span class="function token">hasChildNodes</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> |
29 |
| - <span class="keyword token">var</span> children <span class="operator token">=</span> parg<span class="punctuation token">.</span>childNodes<span class="punctuation token">;</span> |
30 |
| - |
31 |
| - <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">let</span> i <span class="operator token">=</span> <span class="number token">0</span><span class="punctuation token">;</span> i <span class="operator token"><</span> children<span class="punctuation token">.</span>length<span class="punctuation token">;</span> i<span class="operator token">++</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> |
32 |
| - <span class="comment token">// for文を使って各ノードにchildren[i]としてアクセスします |
33 |
| - // 注意! NodeListは不変ではないので、ノードを追加したり削除したりするとchildren.lengthは変化します</span> |
34 |
| - <span class="punctuation token">}</span> |
35 |
| -<span class="punctuation token">}</span></code></pre> |
36 |
| - |
37 |
| -<h3 id="ノードから全ての子を削除する">ノードから全ての子を削除する</h3> |
38 |
| - |
39 |
| -<pre class="brush:js line-numbers language-js"><code class="language-js"><span class="comment token">// これは一例ですが、この方法でノードからすべての子ノードを削除することができます</span> |
40 |
| -<span class="comment token">// let box = document.getElementById(/**/)</span>; |
41 |
| - |
42 |
| -<span class="keyword token">while</span> <span class="punctuation token">(</span>box<span class="punctuation token">.</span>firstChild<span class="punctuation token">)</span> <span class="punctuation token">{ |
43 |
| - // NodeListは不変ではないので、毎処理ごとにbox.firstChildは変化します</span> |
44 |
| - box<span class="punctuation token">.</span><span class="function token">removeChild</span><span class="punctuation token">(</span>box<span class="punctuation token">.</span>firstChild<span class="punctuation token">)</span><span class="punctuation token">;</span> |
45 |
| -<span class="punctuation token">}</span></code></pre> |
46 |
| - |
47 |
| -<h2 id="注記">注記</h2> |
48 |
| - |
49 |
| -<p>ノードのコレクション内の項目はオブジェクトであり、文字列ではありません。node オブジェクトからデータを取得するには、そのプロパティ (たとえば<code>elementNodeReference.childNodes[1].nodeName</code> で名前を取得) を使用します。<br> |
50 |
| - <br> |
51 |
| - <code>document</code>オブジェクト自体には Doctype 宣言と root 要素 の2つの子があり、通常は<code>documentElement</code>と呼ばれます。 ((X)HTML文書ではこれが<code>HTML</code>要素です)<br> |
52 |
| - <br> |
53 |
| - <code>childNodes</code>にはテキストノードやコメントノードなどの非要素ノードを含むすべての子ノードが含まれます。要素のみのコレクションを取得するには、代わりに{{domxref("ParentNode.children")}} を使用してください。</p> |
54 |
| - |
55 |
| -<h2 id="仕様">仕様</h2> |
56 |
| - |
57 |
| -<table class="standard-table"> |
58 |
| - <thead> |
59 |
| - <tr> |
60 |
| - <th scope="col">仕様</th> |
61 |
| - <th scope="col">ステータス</th> |
62 |
| - <th scope="col">コメント</th> |
63 |
| - </tr> |
64 |
| - </thead> |
65 |
| - <tbody> |
66 |
| - <tr> |
67 |
| - <td>{{SpecName('DOM WHATWG', '#dom-node-childnodes', 'Node.childNodes')}}</td> |
68 |
| - <td>{{Spec2('DOM WHATWG')}}</td> |
69 |
| - <td>変更なし</td> |
70 |
| - </tr> |
71 |
| - <tr> |
72 |
| - <td>{{SpecName('DOM3 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}</td> |
73 |
| - <td>{{Spec2('DOM3 Core')}}</td> |
74 |
| - <td>変更なし</td> |
75 |
| - </tr> |
76 |
| - <tr> |
77 |
| - <td>{{SpecName('DOM2 Core', 'core.html#ID-1451460987', 'Node.childNodes')}}</td> |
78 |
| - <td>{{Spec2('DOM2 Core')}}</td> |
79 |
| - <td>変更なし</td> |
80 |
| - </tr> |
81 |
| - <tr> |
82 |
| - <td>{{SpecName('DOM1', 'level-one-core.html#ID-1451460987', 'Node.childNodes')}}</td> |
83 |
| - <td>{{Spec2('DOM1')}}</td> |
84 |
| - <td>初回定義</td> |
85 |
| - </tr> |
86 |
| - </tbody> |
87 |
| -</table> |
88 |
| - |
89 |
| -<h2 id="ブラウザの互換性">ブラウザの互換性</h2> |
90 |
| - |
91 |
| -<p>{{Compat("api.Node.childNodes")}}</p> |
92 |
| - |
93 |
| -<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">関連情報</h2> |
94 |
| - |
95 |
| -<ul> |
96 |
| - <li>{{ domxref("Node.firstChild") }}</li> |
97 |
| - <li>{{ domxref("Node.lastChild") }}</li> |
98 |
| - <li>{{ domxref("Node.nextSibling") }}</li> |
99 |
| - <li>{{ domxref("Node.previousSibling") }}</li> |
100 |
| - <li>{{ domxref("Element.children") }}</li> |
101 |
| -</ul> |
| 11 | +{{APIRef("DOM")}} |
| 12 | + |
| 13 | +**`childNodes`** は {{domxref("Node")}} インターフェイスの読み取り専用プロパティであり、{{domxref("NodeList")}} で指定された要素の子{{domxref("Node", "ノード", "", 1)}}の生きたリストを返し、最初の子ノードは位置 `0` に割り当てられます。子ノードには要素、テキスト、コメントが含まれます。 |
| 14 | + |
| 15 | +> **Note:** {{domxref("NodeList")}} が生きたリストであるというのは、新しい子が追加されたり取り除かれたりするたびに、内容が変化するという意味です。 |
| 16 | +
|
| 17 | +ノードのコレクションの項目はオブジェクトであり、文字列ではありません。ノードオブジェクトからデータを取得するには、そのプロパティを使用してください。例えば、最初の子ノードの名前を取得するには、 `elementNodeReference.childNodes[0].nodeName` を使うことで実現できます。 |
| 18 | + |
| 19 | +{{domxref("document")}} オブジェクト自体には 2 つの子があります。文書型宣言と、ルート要素、ふつうは `documentElement` として参照されます。 HTML 文書の場合、後者は {{HTMLElement("html")}} 要素です。 |
| 20 | + |
| 21 | +覚えておくべき重要なこととして、 `childNodes` には*すべての*子ノードが含まれ、テキストやコメントなどの要素以外のノードが含まれることです。 |
| 22 | +要素のみが含まれるコレクションを取得するのであれば、 {{domxref("Element.children")}} を代わりに使用してください。 |
| 23 | + |
| 24 | +## 値 |
| 25 | + |
| 26 | +このノードの子を含む生きた {{domxref("NodeList")}} です。 |
| 27 | + |
| 28 | +> **Note:** `childNodes` を複数回呼び出しても、*同じ* {{domxref("NodeList")}} が返されます。 |
| 29 | +
|
| 30 | +## 例 |
| 31 | + |
| 32 | +### 単純な使用方法 |
| 33 | + |
| 34 | +```js |
| 35 | +// parg は <p> 要素へのオブジェクト参照です |
| 36 | + |
| 37 | +// まず、要素に子ノードがあるかどうかをチェックします |
| 38 | +if (parg.hasChildNodes()) { |
| 39 | + let children = parg.childNodes; |
| 40 | + |
| 41 | + for (let i = 0; i < children.length; i++) { |
| 42 | + // それぞれの子を children[i] として処理します |
| 43 | + // 注: リストは生きています。子を追加したり取り除いたりすると、リストの `length` が変わります |
| 44 | + } |
| 45 | +} |
| 46 | +``` |
| 47 | + |
| 48 | +### ノードからすべてての子を削除 |
| 49 | + |
| 50 | +```js |
| 51 | +// これはあるノードからすべての子を取り除くための一つの方法です |
| 52 | +// box はある要素へのオブジェクト参照です |
| 53 | + |
| 54 | +while (box.firstChild) { |
| 55 | + // リストは生きているので、呼び出されるたびにインデックスが変わります |
| 56 | + box.removeChild(box.firstChild); |
| 57 | +} |
| 58 | +``` |
| 59 | + |
| 60 | +## 仕様書 |
| 61 | + |
| 62 | +{{Specifications}} |
| 63 | + |
| 64 | +## ブラウザーの互換性 |
| 65 | + |
| 66 | +{{Compat}} |
| 67 | + |
| 68 | +## 関連情報 |
| 69 | + |
| 70 | +- {{domxref("Node.firstChild")}} |
| 71 | +- {{domxref("Node.lastChild")}} |
| 72 | +- {{domxref("Node.nextSibling")}} |
| 73 | +- {{domxref("Node.previousSibling")}} |
| 74 | +- {{domxref("Element.children")}} |
0 commit comments