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);
});

使用例-特定キー(id)の値を取得する。

var result = ExLocation.getQuery('id');


7/18-スクリプト一部修正。