要素の探索

javascript

要素の探索

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

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

<!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を使って親要素を取得してみます。

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

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

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で使用されます。

コメントを残す

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