var getTagName = (function(){ var dummy = document.createElement("div"); return function(node){ node.parentNode.insertBefore(dummy, node); dummy.appendChild(node); var tagName = dummy.innerHTML.match(/<([a-zA-Z]*)/)[1]; dummy.parentNode.insertBefore(node, dummy); dummy.parentNode.removeChild(dummy); return tagName; }; })();
tagNameとかnodeNameとかのプロパティはなぜだか大文字にそろえられてしまう。
じゃぁ生のHTMLを使えばいい。
その生のHTMLを取り出す手段としてinnerHTMLを使いたい。←これ間違え
だけども、指定したノードのHTMLを取り出すのはどうすんのよ、という問題がある。
仕方ないのでダミーなタグをそのノードの直前につっこんで、
そこにそのノードを突っ込む。
そうするとダミーなタグのinnerHTMLの先頭に必ず来てるから、正規表現でタグ名に相当するところを抜き出す。
あとはノードをダミーの前に置きなおして、ダミーを消しておしまい。
普通に生のタグ名を返してくれる関数もしくはプロパティとか、
outerHTMLとかあればいいのに。
ってあるんだったりして。
ってやっぱこれでもダメだ
無駄が多いけどこれ↑でいいかぁ、と思ってたらダメだった。
innerHTMLは生のHTMLはとれなくて、元が大文字のタグでも小文字扱いされちゃう。
アラララ。。
ぐぅむ。