element 取得用
prototype.js っていう javascript のライブラリが出回っているのだけど、そいつでは document.getElementById を $ って一文字だけで書けるようにしてあるらしい。さらに、複数の id を指定すると各要素が配列に格納されて返ってくるらしい。これは便利だと思いイメージで作ってみた。
function $(id){ if(arguments.length == 1 && typeof arguments[0] == 'string'){ return document.getElementById(arguments[0]); } var elements = new Array(); for(var i = 0; i < arguments.length; i++){ if(typeof arguments[i] == 'string'){ elements.push(document.getElementById(arguments[i])); } } return elements; }
きっとこんな感じだろう。とりあえず要件は満たしている。
ということで、調子に乗ってこんなのも作ってみた。
function $T(tagname){ if(typeof tagname == "string"){ return document.getElementsByTagName(tagname); } return null; } function $C(classname,rootnode,tagname){ var results = new Array(); if(rootnode == null){ rootnode = document; } if(tagname == null){ tagname = '*'; } var elements = $T(tagname); var pattern = new RegExp("(^|\\s)" + classname + "(\\s|$)"); for(i = 0; i < elements.length; i++){ if(pattern.test(elements[i].className)){ results.push(elements[i]); } } return results; }
$T は document.getElementsByTagName をただ被せているだけ。$ にちなんで $T にしてみた。 $C は イメージは getElementsByClassName 見たいな感じ。指定された値が class 属性に設定されている要素を取得する。ちなみに複数の class を属性に設定されていても大丈夫なようにしてみた。
こいつらはなかなか使えそうだ。