要素の探索

javascript

要素の探索

ドキュメント内の要素(Element)はツリー構造になっています。
このツリー構造の要素を探索する方法を試してみます。

実際に下記のHTMLファイルを作成し、サーバに設置してみました。
サンプル画面

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
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テストHTML</title>
</head>
<body>
 
<div id="test1">
    <div id="test1_1">
        a
    </div>
    <div id="test1_2">
        b
 
        <div id="test1_2_1">
            b1
        </div>
        <div id="test1_2_2">
            b2
        </div>
 
        <div id="test2_2_1">
            id_b1
        </div>
        <div id="test2_2_2">
            id_b2
        </div>
 
    </div>
    <div id="test1_3">
        b
    </div>
</div>
 
<script type="text/javascript">
 
    let test1_2_1 = document.getElementById("test1_2_1");
 
    // オブジェクトの内容を確認する
    for(var key in test1_2_1){
        console.log(key + " : " + test1_2_1[key]);
    }
 
    console.log("test1_2_1 -> " + test1_2_1);
    console.log("test1_2_1.parentNode -> " + test1_2_1.parentNode);
    console.log("test1_2_1.parentElement -> " + test1_2_1.parentElement);
 
 
</script>
 
</body>
</html>

上記のHTMLソースには「id=”test1″」のdivタグ内にネストされた形で

「id=”test1_1″」
「id=”test1_2″」
「id=”test1_3″」

のdivタグがそれぞれあります。

この状態でツリー構造の要素を取得する方法を試してみます。
具体的には以下の要素取得のコードを書いてみます。

parentNodeによる探索

要素の「test1_2_1」に対して、「parentNode」を使って親要素を取得してみます。
以下のように取得のtest1_2_1を取得し、取得した要素に.parentNodeを使って親要素を取得してみます。

1
2
let test1_2_1 = document.getElementById("test1_2_1");
console.log("test1_2_1.parentNode -> " + test1_2_1.parentNode);

結果は、次のように出力されます。

1
2
3
test1_2_1 -> [object HTMLDivElement]
test1_2_1.parentNode -> [object HTMLDivElement]
test1_2_1.parentElement -> [object HTMLDivElement]

.parentNodeと取得しても、.parentElementと取得しても、出力内容に違いはないように見えますが、
厳密には異なる取得方法になるので、使い分けが必要です。

.parentNodeはidが「test1_2_1」の親ノードの「test1_2」のNodeを示します。

また、.parentElement については、Nodeを親に持つインターフェースで、XMLで使用されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です