ノードのタグ名を読み出す

説明

ノードがタグの場合、tagNameプロパティでタグ名を取得することができます。ノードがタグでない場合、例えばテキストノードの場合にはtagNameプロパティはundefinedとなります。サンプルを実行するとブラウザごとに結果が異なります(表1)。テキストノードの場合は同じですが、Safari 2ではコメントが無視され、IE7では!を返してしまいます。このようなブラウザの違いには注意が必要です。
また、タグ名を取得する場合には、nodeTypeの値を取得しノードがタグかどうかを調べてから取得するようにしてください。

表1
■IE7
undefined
!
SPAN
■Safari 2
undefined
SPAN
undefined
■Firefox 2
undefined
undefined
SPAN

JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>ノードのタグ名を読み出す</h1>
<form action="./checknode.cgi" method="get" name="mainForm">
<input type="button" id="setButton" value="ノードのタグ名を表示">
</form>
<div id="dNode">ここは<!-- コメント --><span>テキストノード</span>です</div>
<div id="result"></div>
</body>
</html>

window.onload = function(){
document.getElementById("setButton").onclick = function(){
var d = document.getElementById("dNode");
var res = document.getElementById("result");
for (var i=0; i<3; i++){
var nType = d.childNodes[i].tagName;
res.innerHTML += nType +"<br>";
}
}
}