frog.raindrop.jp

.knowledge

Last Modified
February 04, 2009 10:05 PM

日々ぶつかった疑問と会得した知識をため込んでいます。別名、プログラマメモ帳。

TrackBacks

Ping this Entry

more...

Search


Category

Archive

あわせて読みたいブログパーツ
RSS feed meter for http://frog.raindrop.jp/
counter
< モジュールのインストール(CPANを使用する場合) | Tabular Data ControlのFilterプロパティ >

October 10, 2003

Javascript版 location.search汎用クラス

URLが、
hoge.html?param1=0001¶m2=0002
のばあい、'?'以降を、ブラウザオブジェクトでは、window.location.searchとして取得することができる。
※ 正確にはsearchの部分はURLに含まないらしい。
これを分割して、連想配列のように取得するクラスを作ってみた。

var oSearch = new CLocationSearch(location.search);
document.write(oSearch.item('param1');
のように使うことができる。

function CLocationSearch(sSource) {
	
	/* 初期化処理 */
	var sAry = new Array();	/* アイテム配列を追加 */
	{
		var nCur = 0, nRet = 0;
		var sSearch = sSource.substr(1);
		var sName, sValue;
				
		nRet = sSearch.indexOf('=', nCur)		// 最初の'='を検索
		while(nRet >= 0) {
			// '='以前が変数名
			sName = sSearch.substring(nCur, nRet);
			nCur = nRet + 1;
			
			// 値を取り出す
			nRet = sSearch.indexOf('&', nCur);	// 変数の区切りを検索
			if (nRet == -1) nRet = sSearch.length + 1;		// なければ最後まで
			sValue = sSearch.substring(nCur, nRet);
			
			// 配列に格納
			sAry[sName] = sValue;
			
			// 次を検索
			nCur = nRet + 1;
			nRet = sSearch.indexOf('=', nCur);
		}
	}
	
	/* 値 */
	this.valueOf = function () {
		return sSource;
	}
	
	/* 値を取り出すメソッド */
	this.item = function (sVarname) {
		try {
			return sAry[sVarname];	//あれば返す
		} catch(e) {
			return '';				//なければ空文字を返す
		}
	}
	
	/* 要素数 */
	this.length   = function () {
		return sAry.length;
	}
	
	/* toString */
	this.toString = function () {
		return this.length + '';
	}
	
}

コメント

コメントする

※ コメントスパム対策のため、コメント本文は、おはよう、こんにちわ、こんばんわ、のいずれかから始めるようにしてください。苦し紛れですけど・・・。

name:
email:

※ 必要ですが、表示しません。

url:
Comment:
Cookieに保存する?