url上のクエリーをパースする関数。
例によって…何かに再利用できそうなのでメモしておく。
var ExLocation = new function(){ var Q = new Object(); var s = window.location.search.substring(1); var ql = s.split('&'); for(var i=0;ql[i];i++){ var pair = ql[i].split('='); if(Q[pair[0]]) Q[pair[0]].push(pair[1]); else Q[pair[0]] = new Array(pair[1]); } this.getQuery = function(key,index){ if(! key) return Q; if(typeof(index)=='number'&&Q[key]) return Q[key][index]; if(Q[key].length>1)return Q[key]; else return Q[key][0]; } this.setQuery = function(key,value){ return Q[key]=value; } this.eachQuery=function(E){ for(var x in Q){ E(x,this.getQuery(x)); } } }
ヘッダ部で実行するだけ。
url中のパラメーター(キー=値)を解析し、値の取り出し等のメソッドを提供する。
メソッド
- getQuery(key,index); クエリーを取り出す。
- 引数が省略された場合クエリーの集合体を返す。
- 第一引数でkeyを指定すると対応する値を返す。
- 第二引数でindexを指定するとkeyの値のうちindex番目の値を返す。
- 第二引数を指定せずに値が複数在るkeyの取り出しを行うと値の配列を返す。
- eachQuery(func); クエリーを順にfuncで処理する。
- funcに処理関数を指定する
- funcには第一引数としてキーが、第二引数として値が渡される。
使用例-全てのクエリーを表示する。
ExLocation.eachQuery(function(key,value){ alert(key+'::'+value); });