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

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

DocumentFragmentに対するgetElementsBy.*Name

javascript

DocumentFragmentには、getElements系のメソッドがなくて、firstChildとかに対して直接指定しなければいけない。
querySelectorとquerySelectorAllはDocumentFragmentに対して使うことができるので、下のようにすれば使うことができる。
ただし、戻り値は静的。

DocumentFragment.prototype.getById = function(id)
  this.querySelector("#" + id);
DocumentFragment.prototype.getByClassName = function()
  this.querySelectorAll("." + Array.join(arguments, ",."));
DocumentFragment.prototype.getByTagName = function()
  this.querySelectorAll(Array.join(arguments, ","));
DocumentFragment.prototype.getByName = function()
  this.querySelectorAll(Array.map(function(s)"[name=" + s + "]").join(","));

var range = document.createRange();
range.selectNode(document.documentElement);
range.cloneContents().getByClassName("day");