読者です 読者をやめる 読者になる 読者になる

gotin blog

Whatever gotin wanna write

ノードの実際のタグ名をとる方法の検討

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はとれなくて、元が大文字のタグでも小文字扱いされちゃう
アラララ。。


ぐぅむ。